claes: I’ll check it out. I just installed libjs-dev or something on debian but i couldn’t find the equivalent on OS X, at least when I tried to install the module the night before the presentation :)
20 modules i haven't yet talked about - Presentation Transcript
use HTTP::ProxyPAC;
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
my $uri = URI->new(\"http://portal.titech.ac.jp/proxy.pac\");
my $pac = HTTP::ProxyPAC->new($uri);
my $res = $pac->find_proxy(\"http://www.google.com/\");
if ($res->direct) {
# ...
} elsif ($res->proxy) {
$ua->proxy('http' => $res->proxy);
}
use JavaScript::Runtime;
sub init {
my($class, $code) = @_;
my $runtime = JavaScript::Runtime->new;
my $context = $runtime->create_context();
for my $func (@HTTP::ProxyPAC::Functions::PACFunctions) {
no strict 'refs';
$context->bind_function(
name => $func,
func => sub { &{\"HTTP::ProxyPAC::Functions::$func\"}(@_) });
}
$context->eval($code);
bless { context => $context }, $class;
}
package HTTP::ProxyPAC::Functions;
# stolen from HTTP::ProxyAutoConfig
sub isPlainHostName {
my ($host) = @_;
return (($host =~ /\\./) ? 0 : 1);
}
sub dnsResolve {
my ($host) = @_;
return unless isResolvable($host);
return inet_ntoa(inet_aton($host));
}
sub myIpAddress {
return inet_ntoa(inet_aton(hostname()));
}
use pQuery::DOM;
my $v = pQuery::DOM->fromHTML('<div id=\"foo\">bar</div>')
->getElementById('foo')->innerHTML;
use pQuery::DOM;
no capitalization ‘pQuery::DOM’;
my $v = pQuery::DOM->fromHTML('<div id=\"foo\">bar</div>')
->get_element_by_id('foo')->innerHTML;
use PHP::Session;
my $session = PHP::Session->new($id);
# session id
my $id = $session->id;
# get/set session data
my $foo = $session->get('foo');
$session->set(bar => $bar);
when = 60.days.ago
datasize = 200.megabytes
use autobox;
use autobox::DateTime::Duration;
# equivalent to DateTime::Duration->new(months => 1, days => 2);
$duration = 1->month + 2->days;
# equivalent to DateTime->now->add(years => 2);
$datetime = 2->years->from_now;
# equivalent to DateTime->now->add(months => 4, years => 5);
$datetime = (4->months + 5->years)->from_now;
# equivalent to DateTime->now->subtract(days => 3);
$datetime = 3->days->ago;
my $ttl = 608400; # 7 days
my $ttl = 608400; # 7 days
604800
my $ttl = 24 * 60 * 60 * 7; # 7 days
use Time::Duration::Parse;
my $ttl = parse_duration “7 days”;
my $latin1_as_utf8 = \"[\\xC2\\xC3][\\x80-\\xBF]\";
my $valid_utf8_regexp = <<'.' ;
[\\x{00}-\\x{7f}]
| [\\x{c2}-\\x{df}][\\x{80}-\\x{bf}]
| \\x{e0} [\\x{a0}-\\x{bf}][\\x{80}-\\x{bf}]
| [\\x{e1}-\\x{ec}][\\x{80}-\\x{bf}][\\x{80}-\\x{bf}]
| \\x{ed} [\\x{80}-\\x{9f}][\\x{80}-\\x{bf}]
| [\\x{ee}-\\x{ef}][\\x{80}-\\x{bf}][\\x{80}-\\x{bf}]
| \\x{f0} [\\x{90}-\\x{bf}][\\x{80}-\\x{bf}]
| [\\x{f1}-\\x{f3}][\\x{80}-\\x{bf}][\\x{80}-\\x{bf}][\\x{80}-\\x{bf}]
| \\x{f4} [\\x{80}-\\x{8f}][\\x{80}-\\x{bf}][\\x{80}-\\x{bf}]
.
sub decode {
my($obj, $buf, $chk) = @_;
$buf =~ s{((?:$latin1_as_utf8){2,3})}{ _check_utf8_bytes($1) }ego;
$_[1] = '' if $chk; # this is what in-place edit means
Encode::decode_utf8($buf);
}
sub _check_utf8_bytes {
my $bytes = shift;
my $copy = $bytes;
my $possible_utf8 = '';
while ($copy =~ s/^(.)(.)//) {
$possible_utf8 .= chr( (ord($1) << 6 & 0xff) | ord($2) )
}
$possible_utf8 =~ /$valid_utf8_regexp/xo ? $possible_utf8 : $bytes;
}
use utf8;
use URI::Find;
my $text = <<TEXT;
Japanese Wikipedia home page URL is
http://ja.wikipedia.org/wiki/
TEXT
my $finder = URI::Find->new(\\&cb);
$finder->find(\\$text);
sub cb { warn shift }
# http://ja.wikipedia.org/wiki/
use utf8;
use URI::Find::UTF8;
my $text = <<TEXT;
Japanese Wikipedia home page URL is
http://ja.wikipedia.org/wiki/
TEXT
my $finder = URI::Find::UTF8->new(\\&cb);
$finder->find(\\$text);
sub cb {
my($uri, $orig) = @_;
}
# http://ja.wikipedia.org/wiki/
use Lingua::JA::Hepburn::Passport;
my $hepburn = Lingua::JA::Hepburn::Passport->new;
$hepburn->romanize(\" \");
# KATO SHUHEI
my $user = “miyagawa”;
my $pass = “blahblah”;
$api->login($user, $pass);
use LWP::UserAgent::Keychain;
my $ua = LWP::UserAgent::Keychain->new;
$ua->get(\"http://proteceted.example.com/\");
5 comments
Comments 1 - 5 of 5 previous next Post a comment