Skip to content

Instantly share code, notes, and snippets.

@msouth
msouth / gist:5029672
Created February 25, 2013 13:00
Lines in Dancer cookbook that look unnecessary to me
# bin/script2.pl
#unnecessary use FindBin;
#unnecessary use Cwd qw/realpath/;
use Dancer ':script';
=pod
Dancer already knows this
#tell the Dancer where the app lives
use Dancer;
use MyTop::MyMiddle::MeetingAlerts;
use Plack::Builder;
my $app = sub {
my $env = shift;
my $request = Dancer::Request->new(env=>$env);
Dancer->dance($request);
};
@msouth
msouth / gist:5423491
Created April 19, 2013 21:53
When will a calendar for the current year be usable again?
perl -e 'for $year (2013..2113) {$cal = qx{cal $year}; $cal =~ s/\d{4}//; if ($year eq "2013") {$comp_cal = $cal} else { die "cal $year\n" if $comp_cal eq $cal} }'
cal 2019
@msouth
msouth / doesn't work
Created April 20, 2013 18:23
incorrect fix [edit: maybe it is correct after all] for problem with new auth stuff in D::P::SimpleCRUD
--- a/lib/Dancer/Plugin/SimpleCRUD.pm
+++ b/lib/Dancer/Plugin/SimpleCRUD.pm
@@ -1176,6 +1193,8 @@ sub _ensure_auth {
Dancer::ModuleLoader->load('Dancer::Plugin::Auth::Extensible')
or die "Can't use auth settings without"
. " Dancer::Plugin::Auth::Extensible!";
+ } else {
+ return $handler;
}
@msouth
msouth / Reproduce.pm
Created June 11, 2013 15:59
dancer -a Minimal::Reproduce; edit the .pm file to look like this; perl Makefile.PL; make; make test; fails because simple_crud() tries to connect to database and doesn't know how
package Minimal::Reproduce;
use Dancer ':syntax';
use Dancer::Plugin::SimpleCRUD;
our $VERSION = '0.1';
get '/' => sub {
template 'index';
};
@msouth
msouth / gist:5959998
Created July 9, 2013 18:41
double-encode some utf-8 stuff for artistically interesting output
use utf8;
use v5.10;
my $string = "áéíóú";
binmode(STDOUT, ":utf8");
say $string;
use Encode qw/encode decode/;
my $bob = encode( 'UTF-8', $string);
# This is the main configuration file of your Dancer app
# env-related settings should go to environments/$env.yml
# all the settings in this file will be loaded at Dancer's startup.
# Your application's name
appname: "Acme::Test::Dancer::Plugin::Database"
# The default layout to use for your application (located in
# views/layouts/main.tt)
layout: "main"
@msouth
msouth / tt.pl
Created August 5, 2013 20:47
single file tt test
use Template;
my $tt = Template->new( START_TAG=>'<%', END_TAG=>'%>' );
$tt->process(\*DATA, {}, \*stdout) ;
__DATA__
<% index = 0; last = 0; %>
index is now <% index %>
@msouth
msouth / Foodle.pm
Created August 6, 2013 14:08
quick store/retrieve with Storable in a Dancer app
package Foodle;
use Dancer ':syntax';
use Storable;
our $VERSION = '0.1';
get '/' => sub {
template 'index';
};
use DBI;
use strict;
use warnings;
my $db_name = shift or die "call as $0 [database_name] [mysql user] [mysql password]";
my $mysql_user = shift || 'root';
my $mysql_password = shift || '';
my $dbh = DBI->connect("dbi:mysql:database=$db_name", $mysql_user, $mysql_password) || die DBI->errstr;