Skip to content

Instantly share code, notes, and snippets.

@dakkar
dakkar / xscheck.pl
Created May 16, 2017 16:21
Check what C libraries get loaded when loading a Perl module
#!/usr/bin/env perl
use strict;
use warnings;
sub maps {
open my $fh, '<', '/proc/self/maps';
my @lines = <$fh>;
my %ret = map {
m{\ {10}(/.+)$} ? ($1,$_) : ()
} @lines;
#!perl6
use v6.c;
class Thing {
method blah($val=1) { 15+$val }
}
class Thunk {
has $.maker;
@dakkar
dakkar / sleep-alarm-die-eval.t
Last active October 12, 2016 16:06
A weird problem with sleep/alarm/die/eval
#!/usr/bin/env perl
use strict;
use warnings;
use Test::More;
# this works in 5.8 and 5.24, fails under 5.18 5.20 and 5.22
sub do_it {
my ($call) = @_;
eval {
@dakkar
dakkar / format-tagged.pl
Created July 12, 2016 13:35
First stab at String::Formatter::Tagged
#!/usr/bin/env perl
use strict;
use warnings;
use 5.020;
package String::Formatter::Tagged {
use parent 'String::Formatter';
use String::Tagged;
use Safe::Isa;
@dakkar
dakkar / Trace.pm
Created June 14, 2016 20:31
PerlIO layer to trace all reads / writes
package PerlIO::via::Trace;
use strict;
use warnings;
use Fcntl;
use Devel::StackTrace;
my $log_fh;
sub _trace {
my $fh = shift;
local $@;local $!;
#!/usr/bin/env perl
use strict;
use warnings;
use Benchmark;
use List::Util;
my @keys = List::Util::shuffle( (1..500) x 1000, 600..800 );
Benchmark::cmpthese(-5, {
with_test => 'my %h; for my $k (@keys) { $h{$k}=1 unless exists $h{$k} }',
@dakkar
dakkar / fetch-and-list-tlds.pl
Created November 13, 2015 19:23
Fetch and list all TLDs
#!/usr/bin/env perl
use strict;
use warnings;
use 5.018;
use open ':std',':locale';
use LWP::Simple;
use URI::_punycode;
my $root_zone = get('https://www.internic.net/domain/root.zone');
my @root_records = split /\n/,$root_zone;
@dakkar
dakkar / portage-scan
Created April 16, 2015 10:33
Gentoo: find all files Portage can't re-create for you
#!/usr/bin/env perl
use strict;
use warnings;
use 5.020;
use autodie;
use Try::Tiny;
use File::Find::Rule;
use File::stat;
use Digest::MD5;
@dakkar
dakkar / app.psgi
Created February 11, 2015 10:12
Test case for Plack::Middleware::Session issue #29
#!perl
use strict;
use warnings;
package ForceSessionSave {
use parent 'Plack::Middleware';
sub call {
my ($self,$env) = @_;
my $res = $self->app->($env);
@dakkar
dakkar / gist:33257b8508507b3c47f9
Created August 1, 2014 15:48
Bread::Board deferred injections & generational lifecycle
#!/usr/bin/env perl
use strict;
use warnings;
use 5.018;
package App {
use Moose;
has model1 => ( is => 'ro', isa => 'Model1', );
has model2 => ( is => 'ro', isa => 'Model2', );