Your SlideShare is downloading. ×
0
Bag of tricks
Bag of tricks
Bag of tricks
Bag of tricks
Bag of tricks
Bag of tricks
Bag of tricks
Bag of tricks
Bag of tricks
Bag of tricks
Bag of tricks
Bag of tricks
Bag of tricks
Bag of tricks
Bag of tricks
Bag of tricks
Bag of tricks
Bag of tricks
Bag of tricks
Bag of tricks
Bag of tricks
Bag of tricks
Bag of tricks
Bag of tricks
Bag of tricks
Bag of tricks
Bag of tricks
Bag of tricks
Bag of tricks
Bag of tricks
Bag of tricks
Bag of tricks
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Bag of tricks

4,273

Published on

A collection of things I often use in my Perl scripts.

A collection of things I often use in my Perl scripts.

Published in: Technology
0 Comments
10 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,273
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
7
Comments
0
Likes
10
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. My PerlBag of Tricks brian d foy The Perl Review YAPC::Brasil 2011 http://slidesha.re/s06nuv
  • 2. ⃠
  • 3. • Eliminate special cases• Remove distractions• Know less• Let Perl do the work• Scale gracefully
  • 4. % perl -e print qq(Alo Mundon)% perl -le print q(Alo Mundo)
  • 5. my $string = some_sub();open my $fh, , $string;while($fh){ chomp; ...; }
  • 6. use 5.014;my $new = $old =~ s/.../.../r;foo( $old =~ s/.../.../r );print %s %sn, $old, $old =~ s/.../.../r ;
  • 7. foreach my $file ( @files ) { open my($fh), , $file or do { warn ... $!n; next FILE; }; ... }
  • 8. my $data = do { local $/; DATA };...;__END__?xml version=1.0?root.../root
  • 9. my $data = do { local $/; DATA };s|.*(?=elem)||; s|(?=/elem).*||;my $name = m|elem(.*?)/elem|;__END__?xml version=1.0?root...elemBuster/elem/root
  • 10. $g = q(Mimi,Bean,Buster,Roscoe);my @gatos = split /(?=),(?=)/, $g;
  • 11. $g = q(Roscoe , Cat,Bean, Buster);my @gatos = split /(?!)(?=),(?=)(?!)/, $g;
  • 12. if( ref $r eq ARRAY )if( ref $r eq ref [] )if( ref $r eq ref {} )if( ref $r eq ref sub {} )if( ref $r eq ref qr// )
  • 13. join n, @entries, ;join nt, t, @entries;
  • 14. BEGIN { use Foo; package Foo; no warnings qw(redefine); sub foo { ... } }
  • 15. # Git::CPAN::Patch% git cpan-init http://...... hack hack hack ...% git commit% git cpan-sendpatch
  • 16. my $file = MPEG::Info-new( ... );print join $/, map { $file-$_() } qw(acodec acodecraw achans ... );
  • 17. package Modulino { run(@ARGV) unless caller; sub run { my @args = @_; ...; } }
  • 18. if( /p{IsUppercaseRoman}/ ) { ...}# ⅠⅤⅩⅬⅭⅮⅯↁↂↇↈsub IsUppercaseRoman { return CODE_NUMBERS;216021642169216C 216F2181 21822187 2188CODE_NUMBERS }
  • 19. printf %1$#b %1$#o %1$d %1$#xn, 137;# 0b10001001 0211 137 0x89
  • 20. gato( nome = Buster );sub gato { my %defaults = (...); my %config = (%defaults, @_ ); ...; }
  • 21. BEGIN { my $fixed_time = 1234567890; no warnings qw(redefine); *CORE::GLOBAL::time = sub { $fixed_time }; sub set_time { $fixed_time = $_[0] }}ok( time $fixed_time );
  • 22. sub my_grep (@) { my( $sub ) = shift; foreach my $arg ( @_ ) { local $_ = $arg; push @output, $arg if $sub-() } }
  • 23. my $ucfirst_and_trim = composer( trim_front, trim_back, my_ucfirst );$s = $ucfirst_and_trim-($s);
  • 24. sub composer { my (@sub_refs) = @_; sub { my $string = shift; foreach my $sub_ref (@sub_refs) { $string = $sub_ref-($string); } return $string; }; }
  • 25. my @tests = ( # ARG EXPECTED LABEL [ [1,2,3], 6, Sum is 6 ], [ [-1,0,9], 8, Sum is 8 ], ... );foreach my $test ( @tests ) { is( target_sub( $test-[ARG] ), $test-[EXPECTED], $test-[LABEL] ); }
  • 26. package Local::Null::Logger { sub new { bless my $x, $_[0] } sub AUTOLOAD { shift; print @_, $/ } sub DESTROY { 1 } }sub _init_logger { my $log4perl_loaded = eval require Log::Log4perl; 1; unless( $log4perl_loaded ){ return Local::Null::Logger-new; } ...; }
  • 27. $object-foo-bar-baz-quux;package Class { sub bar { return Null-new if $error; } }package Null { my $null = bless {}, __PACKAGE__; sub new { $null } sub AUTOLOAD { return $_[0] } sub DESTROY { 1 } }
  • 28. Obrigadohttp://slidesha.re/s06nuv
  • 29. http://commons.wikimedia.org/wiki/File:Pelé_jump_1958.jpghttp://commons.wikimedia.org/wiki/File:Brazilian_National_Congress.jpg

×