Utility Modules That You Should Know About

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    2 Favorites, 1 Group & 1 Event

    Utility Modules That You Should Know About - Presentation Transcript

    1. josh mcadams doubleclick/performics
    2. use strict;
    3. use strict; $perl = 'frozen'; $ref = 'perl'; print $$ref, \"\\n\"; $ perl strict_refs.pl frozen
    4. use strict; use strict \"refs\"; $perl = 'frozen'; $ref = 'perl'; print $$ref, \"\\n\"; $ perl strict_refs.pl Can't use string (\"perl\") as a SCALAR ref while \"strict refs\" in use at strict_refs.pl line 4.
    5. use strict; use strict \"vars\"; $perl = 'frozen'; $ref = 'perl'; print $$ref, \"\\n\"; $ perl strict_vars.pl Global symbol \"$perl\" requires explicit package name at strict_vars.pl line 2. Global symbol \"$ref\" requires explicit package name at strict_vars.pl line 3. Global symbol \"$ref\" requires explicit package name at strict_vars.pl line 4. Execution of strict_vars.pl aborted due to compilation errors.
    6. use strict; use strict \"vars\"; our $perl = 'frozen'; my $ref = 'perl'; print $$ref, \"\\n\"; $ perl strict_vars.pl frozen
    7. use strict; use strict \"subs\"; $person = Josh; $directory{mcadams} = [ first => $person ]; print $directory{mcadams}->[1], \"\\n\"; $ perl strict_subs.pl Bareword \"Josh\" not allowed while \"strict subs\" in use at strict_subs.pl line 2. Execution of strict_subs.pl aborted due to compilation errors.
    8. use strict; use strict \"subs\"; $person = ‘Josh’; $directory{mcadams} = [ first => $person ]; print $directory{mcadams}->[1], \"\\n\"; $ perl strict_subs.pl Josh
    9. use strict; - Typically ‘use strict;’ is all that you’ll need - You can ‘no strict “refs”;’ in your code - Use the strict pragma in all of your Perl code
    10. use warnings;
    11. use warnings; perl -w script.pl #/usr/bin/perl -w
    12. use warnings; use warnings; no warnings;
    13. use base;
    14. use base; push @ISA, ‘SomeModule’;
    15. use base; use base qw(SomeModule);
    16. use constant;
    17. use constant; use warnings; use strict; use constant DO_NOT_DISTURB => 1; print \"leave me alone\\n\" if DO_NOT_DISTURB; > perl constant.pl leave me alone
    18. use Exporter;
    19. use Exporter; use MyPackage; MyPackage::my_subroutine();
    20. use Exporter; package MyPackage; use warnings; use strict; use Exporter qw(import); our @EXPORT_OK = qw(my_subroutine); sub my_subroutine { print \"hello\\n\"; } 1;
    21. use Exporter; use warnings; use strict; use MyPackage qw(my_subroutine); my_subroutine();
    22. use Data::Dumper;
    23. use Data::Dumper; use warnings; use strict; use Data::Dumper; print Dumper \\@ARGV; > perl datadumper.pl hello frozen perl $VAR1 = [ 'hello', 'frozen', 'perl' ];
    24. use Class::Accessor;
    25. use Class::Accessor; sub name { my ($self, $value) = @_; $self->{name} = $value if $value; return $self->{name}; }
    26. use Class::Accessor; package MyClass; use base qw(Class::Accessor); __PACKAGE__->mk_accessors(qw(name));
    27. use Carp;
    28. use Carp; 1 package PackageOne; 2 3 sub y { z(); } 4 sub z { die('oops'); } 5 6 package PackageTwo; $ perl die.pl 7 oops at die.pl line 4. 8 sub a { b(); } 9 sub b { PackageOne::y(); } 10 11 package main; 12 13 PackageTwo::a();
    29. use Carp; 1 package PackageOne; 2 3 use Carp; 4 5 sub y { z(); } 6 sub z { croak('oops'); } 7 $ perl croak.pl 8 package PackageTwo; oops at croak.pl line 11 9 10 sub a { b(); } 11 sub b { PackageOne::y(); } 12 13 package main; 14 15 PackageTwo::a();
    30. use Carp; 1 package PackageOne; 2 3 use Carp qw(confess); 4 $ perl confess.pl 5 sub y { z(); } oops at confess.pl line 6 6 sub z { confess('oops'); } PackageOne::z() called at 7 confess.pl line 5 PackageOne::y() called at 8 package PackageTwo; confess.pl line 11 9 PackageTwo::b() called at 10 sub a { b(); } confess.pl line 10 11 sub b { PackageOne::y(); } PackageTwo::a() called at 12 confess.pl line 15 13 package main; 14 15 PackageTwo::a();
    31. use Carp; caller’s standard full stacktrace perspective warn carp cluck die croak confess
    32. use Carp::Assert;
    33. use Carp::Assert; use Carp::Assert; assert( 1 > 0 ); affirm { my $name = 'Josh'; my @attendees = qw( Josh Heather Addy ); grep { $_ eq $name } @attendees; } > perl assert.pl
    34. use Carp::Assert; use Carp::Assert; assert( 1 > 2); affirm { my $name = 'Josh'; my @attendees = qw( Josh Heather Addy ); grep { $_ eq $name } @attendees; } > perl assert.pl Assertion failed! at /opt/local/lib/perl5/site_perl/5.8.8/Carp/Assert.pm line 281 Carp::Assert::assert('') called at assert.pl line 5
    35. use Carp::Assert; use Carp::Assert; assert( 1 > 0); affirm { my $name = 'Joshua'; my @attendees = qw( Josh Heather Addy ); grep { $_ eq $name } @attendees; } > perl assert.pl Assertion ({ use warnings; use strict 'refs'; my $name = 'Joshua'; my(@attendees) = ('Josh', 'Heather', 'Addy'); grep {$_ eq $name;} @attendees; }) failed! at /opt/local/lib/perl5/site_perl/5.8.8/Carp/Assert.pm line 340 Carp::Assert::affirm('CODE(0x1800ee0)') called at assert.pl line 11
    36. use File::Spec;
    37. use File::Spec; use warnings; use strict; use File::Spec; my @dirs = File::Spec->splitdir($0); print '[', join('][', @dirs), \"]\\n\"; my $dir = File::Spec->join(@dirs); print $dir, \"\\n\"; > perl /Users/joshua/examples/filespec.pl [][Users][joshua][examples][filespec.pl] /Users/joshua/examples/filespec.pl
    38. use File::stat;
    39. use File::stat; my ($dev,$ino,$mode,$nlink,$uid, $gid,$rdev,$size,$atime,$mtime, $ctime,$blksize,$blocks) = stat ($filename);
    40. use File::stat; use warnings; use strict; use File::stat; my $s = stat($0); print $s->size, \"\\n\"; > perl filestat.pl 84
    41. use File::Slurp;
    42. use File::Slurp; { local(*INPUT, $/); open (INPUT, $file) || die \"can't open $file: $!\"; $var = <INPUT>; }
    43. use File::Slurp; my $text = read_file( $file ); my @lines = read_file( $file );
    44. use File::Slurp; write_file( $filename, @data );
    45. use File::Copy;
    46. use File::Copy; use warnings; use strict; use File::Copy; my $command = \"cp $0 $0.bkup\"; `$command`;
    47. use File::Copy; use warnings; use strict; use File::Copy; copy $0, $0 . '.bkup' or die $!;
    48. use File::Temp;
    49. use File::Temp; use warnings; use strict; use File::Temp; my $fh = File::Temp->new( UNLINK => 1 ); print $fh->filename, \"\\n\"; > perl tempfile.pl /tmp/yZin81tl6z
    50. use File::Temp; use warnings; use strict; use File::Temp; my $fh = File::Temp->newdir( CLEANUP => 1 ); print $fh->dirname, \"\\n\"; > perl tempdir.pl /tmp/HggvehyAyw
    51. use File::Find;
    52. use File::Find; use warnings; use strict; use File::Find; find( sub { print \"$File::Find::name\\n\" }, '/Users/joshua/' ); > perl filefind.pl /Users/joshua/...
    53. use File::Next;
    54. use File::Next; use warnings; use strict; use File::Next; my $files = File::Next::files( '/Users/joshua/' ); while ( defined ( my $file = $files->() ) ) { print \"$file\\n\"; } > perl filenext.pl /Users/joshua/...
    55. use File::Basename;
    56. use File::Basename; use warnings; use strict; use File::Basename; my $file = basename $0; my $path = dirname $0; my ($file2, $path2) = fileparse $0; print join(\"\\n\", $file, $path, $file2, $path2), \"\\n\"; > perl /Users/joshua/examples/basename.pl basename.pl /Users/joshua/examples basename.pl /Users/joshua/examples/
    57. use File::HomeDir;
    58. use File::HomeDir; use warnings; use strict; use File::HomeDir; print File::HomeDir->my_home(), \"\\n\"; print File::HomeDir->my_data(), \"\\n\"; > perl filehomedir.pl /Users/joshua /Users/joshua/Library/Application Support
    59. use IO::File;
    60. use IO::File; use warnings; use strict; my $fh; open( $fh, '<', $0 ) or die $!; print while(<$fh>); close $fh;
    61. use IO::File; use warnings; use strict; use IO::File; my $fh = IO::File->new( $0, 'r' ); print while(<$fh>); $fh->close;
    62. use FindBin;
    63. use FindBin; package MyModule; use warnings; use strict; sub hello { print \"hello\\n\"; } 1;
    64. use FindBin; use warnings; use strict; use lib 'mylib'; use MyModule; MyModule::hello(); > perl findbin.pl hello
    65. use FindBin; > perl ~/bin/findbin.pl Can't locate MyModule.pm in @INC (@INC contains: mylib / opt/local/lib/perl5/5.8.8/darwin-2level /opt/local/lib/ perl5/5.8.8 /opt/local/lib/perl5/site_perl/5.8.8/ darwin-2level /opt/local/lib/perl5/site_perl/5.8.8 /opt/ local/lib/perl5/site_perl /opt/local/lib/perl5/ vendor_perl/5.8.8/darwin-2level /opt/local/lib/perl5/ vendor_perl/5.8.8 /opt/local/lib/perl5/vendor_perl .) at Utility Modules That You Should Know About/findbin.pl line 4. BEGIN failed--compilation aborted at Utility Modules That You Should Know About/findbin.pl line 4.
    66. use FindBin; use warnings; use strict; use FindBin; use lib \"$FindBin::Bin/../mylib\"; use MyModule; MyModule::hello();
    67. use Getopt::Long;
    68. use Getopt::Long; use Getopt::Long; GetOptions( 'greeting=s', 'person=s', 'prefix:s' ) or die('error'); print join( q[ ], $opt_greeting, ($opt_prefix || q[]), $opt_person), \"\\n\"; > perl getopt1.pl --greeting=hello --person=josh --prefix= hello josh
    69. use Getopt::Long; use warnings; use strict; use Getopt::Long; my ($greeting, $person, $prefix); GetOptions( 'greeting=s' => \\$greeting, 'person=s' => \\$person, 'prefix:s' => \\$prefix, ) or die('error'); print join( q[ ], $greeting, ($prefix || q[]), $person), \"\\n\";
    70. use Getopt::Long; use warnings; use strict; use Getopt::Long; my %options; GetOptions( \\%options, 'greeting=s', 'person=s', 'prefix:s', ) or die('error'); print join( q[ ], @options{ qw(greeting prefix person) } ), \"\\n\";
    71. use Pod::Usage;
    72. use Pod::Usage; use Getopt::Long; use Pod::Usage; GetOptions('help', 'man') or pod2usage(2); pod2usage(1) if $opt_help; pod2usage(-verbose => 2) if $opt_man; __END__
    73. use Pod::Usage; =head1 NAME sample - Using GetOpt::Long and Pod::Usage =head1 SYNOPSIS sample [options] Options: -help brief help message -man full documentation =head1 OPTIONS =over 8 =item B<-help> Print a brief help message and exits. =item B<-man> Prints the manual page and exits. =back =head1 DESCRIPTION Sample is exactly that, a sample. =cut
    74. use Pod::Usage; > perl pod_usage.pl -h Usage: pod_usage [options] Options: -help brief help message -man full documentation Options: -help Print a brief help message and exits. -man Prints the manual page and exits.
    75. use Pod::Usage; > perl pod_usage.pl -m POD_USAGE(1) User Contributed Perl Documentation POD_USAGE(1) NAME pod_usage - Using GetOpt::Long and Pod::Usage SYNOPSIS pod_usage [options] Options: -help brief help message -man full documentation OPTIONS -help Print a brief help message and exits. -man Prints the manual page and exits. DESCRIPTION pod_usage just an example. perl v5.8.8 2008-02-16 POD_USAGE(1)
    76. thank you
    77. yapc.org/America

    + joshua.mcadamsjoshua.mcadams, 2 years ago

    custom

    3665 views, 2 favs, 1 embeds more stats

    This slideshow was presented at Frozen Perl 2008 an more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 3665
      • 3662 on SlideShare
      • 3 from embeds
    • Comments 0
    • Favorites 2
    • Downloads 42
    Most viewed embeds
    • 3 views on http://thomas-fahle.blogspot.com

    more

    All embeds
    • 3 views on http://thomas-fahle.blogspot.com

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories

    Groups / Events