perl 5.12 for everyday use

155
Perl 5.12 for everyday use Sunday, December 5, 2010

Upload: ricardo-signes

Post on 15-Jan-2015

1.666 views

Category:

Documents


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Perl 5.12 for Everyday Use

Perl 5.12for everyday use

Sunday, December 5, 2010

Page 2: Perl 5.12 for Everyday Use

perl5100delta

5.12 isn’t like 5.10

Sunday, December 5, 2010

Page 3: Perl 5.12 for Everyday Use

perl5100delta

5.12 isn’t like 5.10

- after 5.8, we had to wait 5 years for 5.10

Sunday, December 5, 2010

Page 4: Perl 5.12 for Everyday Use

perl5100delta

5.12 isn’t like 5.10

- after 5.8, we had to wait 5 years for 5.10

- 5.12 came out 2 years after 5.10

Sunday, December 5, 2010

Page 5: Perl 5.12 for Everyday Use

perl5100delta

5.12 is a Nice Change

Sunday, December 5, 2010

Page 6: Perl 5.12 for Everyday Use

perl5100delta

5.12 is a Nice Change

- 5.10 was a huge set of changes

Sunday, December 5, 2010

Page 7: Perl 5.12 for Everyday Use

perl5100delta

5.12 is a Nice Change

- 5.10 was a huge set of changes

- 5.12 is a lot smaller

Sunday, December 5, 2010

Page 8: Perl 5.12 for Everyday Use

perl5100delta

5.12 is a Nice Change

- 5.10 was a huge set of changes

- 5.12 is a lot smaller

- 5.12 is not as compelling as 5.10

Sunday, December 5, 2010

Page 9: Perl 5.12 for Everyday Use

perl5100delta

5.12 is a Nice Change

- 5.10 was a huge set of changes

- 5.12 is a lot smaller

- 5.12 is not as compelling as 5.10

- and that’s a good thing

Sunday, December 5, 2010

Page 10: Perl 5.12 for Everyday Use

perl5100delta

5.12 is a Mixed Bag

Sunday, December 5, 2010

Page 11: Perl 5.12 for Everyday Use

perl5100delta

5.12 is a Mixed Bag

- this talk isn’t just for beginners

Sunday, December 5, 2010

Page 12: Perl 5.12 for Everyday Use

perl5100delta

5.12 is a Mixed Bag

- this talk isn’t just for beginners

- some of these changes are at the edges

Sunday, December 5, 2010

Page 13: Perl 5.12 for Everyday Use

perl5100delta

5.12 is a Mixed Bag

- this talk isn’t just for beginners

- some of these changes are at the edges

- but they’re all practical

Sunday, December 5, 2010

Page 14: Perl 5.12 for Everyday Use

perl5100delta

5.12 is a Mixed Bag

- this talk isn’t just for beginners

- some of these changes are at the edges

- but they’re all practical

- except for the ones that aren’t

Sunday, December 5, 2010

Page 15: Perl 5.12 for Everyday Use

perl5132delta

By the way, 5.14...

Sunday, December 5, 2010

Page 16: Perl 5.12 for Everyday Use

perl5132delta

By the way, 5.14...

- is going to be awesome

Sunday, December 5, 2010

Page 17: Perl 5.12 for Everyday Use

perl5132delta

By the way, 5.14...

- is going to be awesome

- and available in about nine months

Sunday, December 5, 2010

Page 18: Perl 5.12 for Everyday Use

perl5132delta

By the way, 5.14...

- is going to be awesome

- and available in about nine months

- and it’s going to be awesome

Sunday, December 5, 2010

Page 19: Perl 5.12 for Everyday Use

perl5101delta

...and 5.10 is frozen.

Sunday, December 5, 2010

Page 20: Perl 5.12 for Everyday Use

perl5101delta

...and 5.10 is frozen.

- 5.10 is the last release of the old way

Sunday, December 5, 2010

Page 21: Perl 5.12 for Everyday Use

perl5101delta

...and 5.10 is frozen.

- 5.10 is the last release of the old way

- that means it got some features backported

Sunday, December 5, 2010

Page 22: Perl 5.12 for Everyday Use

perl5101delta

...and 5.10 is frozen.

- 5.10 is the last release of the old way

- that means it got some features backported

- that will never happen again

Sunday, December 5, 2010

Page 23: Perl 5.12 for Everyday Use

perl5101delta

...and 5.10 is frozen.

- 5.10 is the last release of the old way

- that means it got some features backported

- that will never happen again

- I’ll point out 5.12isms that got into 5.10.1

Sunday, December 5, 2010

Page 24: Perl 5.12 for Everyday Use

but enough about other versions

Sunday, December 5, 2010

Page 25: Perl 5.12 for Everyday Use

let’s talk about 5.12

Sunday, December 5, 2010

Page 26: Perl 5.12 for Everyday Use

feature

First: A Warning

Sunday, December 5, 2010

Page 27: Perl 5.12 for Everyday Use

feature

First: A Warning

- 5.12 is backwards compatible

Sunday, December 5, 2010

Page 28: Perl 5.12 for Everyday Use

feature

First: A Warning

- 5.12 is backwards compatible

- but adds new keywords and operators

Sunday, December 5, 2010

Page 29: Perl 5.12 for Everyday Use

feature

First: A Warning

- 5.12 is backwards compatible

- but adds new keywords and operators

- they’re not enabled by default

Sunday, December 5, 2010

Page 30: Perl 5.12 for Everyday Use

feature

First: A Warning

- 5.12 is backwards compatible

- but adds new keywords and operators

- they’re not enabled by default

- use feature ‘mtfnpy’;

Sunday, December 5, 2010

Page 31: Perl 5.12 for Everyday Use

feature

First: A Warning

- 5.12 is backwards compatible

- but adds new keywords and operators

- they’re not enabled by default

- use feature ‘mtfnpy’;

- use 5.012;

Sunday, December 5, 2010

Page 32: Perl 5.12 for Everyday Use

feature

First: A Warning

- 5.12 is backwards compatible

- but adds new keywords and operators

- they’re not enabled by default

- use feature ‘mtfnpy’;

- use 5.012;

- read the perldoc

Sunday, December 5, 2010

Page 33: Perl 5.12 for Everyday Use

feature

First: A Warning

- 5.12 is backwards compatible

- but adds new keywords and operators

- they’re not enabled by default

- use feature ‘mtfnpy’;

- use 5.012;

- read the perldoc I’m a perldoc ref!

Sunday, December 5, 2010

Page 34: Perl 5.12 for Everyday Use

feature

First: A Warning

- 5.12 is backwards compatible

- but adds new keywords and operators

- they’re not enabled by default

- use feature ‘mtfnpy’;

- use 5.012;

- read the perldoc

Sunday, December 5, 2010

Page 35: Perl 5.12 for Everyday Use

perlsyn

- the smart match operator changed

$old ~~ $new

also in 5.10.1

Sunday, December 5, 2010

Page 36: Perl 5.12 for Everyday Use

perldoc

~~

- no longer commutative; right side wins

- non-overloaded objects can’t be ~~ed

- still very complicated (23 behaviors)

- you won’t be using this every day

Sunday, December 5, 2010

Page 37: Perl 5.12 for Everyday Use

autodie

autodie

also in 5.10.1

Sunday, December 5, 2010

Page 38: Perl 5.12 for Everyday Use

autodie

autodie

- like Fatal

also in 5.10.1

Sunday, December 5, 2010

Page 39: Perl 5.12 for Everyday Use

autodie

autodie

- like Fatal

- but deadlier

also in 5.10.1

Sunday, December 5, 2010

Page 40: Perl 5.12 for Everyday Use

autodie

autodie

open my $fh, ‘>‘, $filename;

while (<$fh>) { ...}

close $fh;

Sunday, December 5, 2010

Page 41: Perl 5.12 for Everyday Use

autodie

autodie

open my $fh, ‘>‘, $filename or die “couldn’t open $filename: $!”;

while (<$fh>) { ...}

close $fh or die “couldn’t close $filename: $!”;

Sunday, December 5, 2010

Page 42: Perl 5.12 for Everyday Use

autodie

autodie

use autodie;

open my $fh, ‘<‘, $filename;

while (<$fh>) { ...}

close $fh;

Sunday, December 5, 2010

Page 43: Perl 5.12 for Everyday Use

autodie

autodie

use autodie;

open my $fh, ‘>‘, $filename;

while (<$fh>) { no autodie; rmdir or warn “couldn’t remove $_: $!”;}

close $fh;

Sunday, December 5, 2010

Page 44: Perl 5.12 for Everyday Use

perldoc

autodie problems

- autodie doesn’t affect print

- you must close filehandles explicitly

Sunday, December 5, 2010

Page 45: Perl 5.12 for Everyday Use

Unicode

Sunday, December 5, 2010

Page 46: Perl 5.12 for Everyday Use

perlunicode

Perl is Good at Unicode

Sunday, December 5, 2010

Page 47: Perl 5.12 for Everyday Use

perlunicode

Perl 5.12 is Better

Sunday, December 5, 2010

Page 48: Perl 5.12 for Everyday Use

perlunicode

Perl 5.12 is Better

- Unicode 5.2

Sunday, December 5, 2010

Page 49: Perl 5.12 for Everyday Use

perlunicode

Perl 5.12 is Better

- Unicode 5.2

- every character property is available

Sunday, December 5, 2010

Page 50: Perl 5.12 for Everyday Use

perlunicode

Perl 5.12 is Better

- Unicode 5.2

- every character property is available

- \X in regex is more sensible

Sunday, December 5, 2010

Page 51: Perl 5.12 for Everyday Use

perlunicode

“The Unicode Bug”

Sunday, December 5, 2010

Page 52: Perl 5.12 for Everyday Use

perlunicode

“The Unicode Bug”

- strings aren’t always treated as Unicode

Sunday, December 5, 2010

Page 53: Perl 5.12 for Everyday Use

perlunicode

“The Unicode Bug”

- strings aren’t always treated as Unicode

- this causes weird bugs that take ages to find

Sunday, December 5, 2010

Page 54: Perl 5.12 for Everyday Use

perlunicode

“The Unicode Bug”

- strings aren’t always treated as Unicode

- this causes weird bugs that take ages to find

- use feature ‘unicode_strings’;

Sunday, December 5, 2010

Page 55: Perl 5.12 for Everyday Use

perldoc

use feature ‘unicode_strings’;

Sunday, December 5, 2010

Page 56: Perl 5.12 for Everyday Use

perldoc

use 5.12.0;

Sunday, December 5, 2010

Page 57: Perl 5.12 for Everyday Use

perldoc

use 5.10.0;

Sunday, December 5, 2010

Page 58: Perl 5.12 for Everyday Use

perldoc

use 5.10.0;

use feature qw( say state switch);

Sunday, December 5, 2010

Page 59: Perl 5.12 for Everyday Use

perldoc

use 5.12.0;

Sunday, December 5, 2010

Page 60: Perl 5.12 for Everyday Use

perldoc

use 5.12.0;

use feature qw( say state switch unicode_strings);

Sunday, December 5, 2010

Page 61: Perl 5.12 for Everyday Use

perldoc

use 5.12.0;

use feature qw( say state switch unicode_strings);

use strict;

Sunday, December 5, 2010

Page 62: Perl 5.12 for Everyday Use

Container Improvements

Sunday, December 5, 2010

Page 63: Perl 5.12 for Everyday Use

my %hash = (a => 1, b => 2);

while (my ($k, $v) = each %hash) { say “value for $k is $v”;}

Sunday, December 5, 2010

Page 64: Perl 5.12 for Everyday Use

my %hash = (a => 1, b => 2);

while (my ($k, $v) = each %hash) { say “value for $k is $v”;}

value for a is 1value for b is 2

Sunday, December 5, 2010

Page 65: Perl 5.12 for Everyday Use

Sunday, December 5, 2010

Page 66: Perl 5.12 for Everyday Use

my @array = qw(a b);

Sunday, December 5, 2010

Page 67: Perl 5.12 for Everyday Use

my @array = qw(a b);

value for 0 is bvalue for 1 is a

Sunday, December 5, 2010

Page 68: Perl 5.12 for Everyday Use

my @array = qw(a b);

for my $k (0 .. $#array) { say “value for $k is $array[$k]”;}

value for 0 is bvalue for 1 is a

Sunday, December 5, 2010

Page 69: Perl 5.12 for Everyday Use

my @array = qw(a b);

while (my ($k, $v) = each @array) { say “value for $k is $v”;}

value for 0 is bvalue for 1 is a

Sunday, December 5, 2010

Page 70: Perl 5.12 for Everyday Use

my @array = qw(a b);

while (my ($k, $v) = each @array) { say “value for $k is $v”;}

my @array = qw(a b);

for my $k (0 .. $#array) { say “value for $k is $array[$k]”;}

Sunday, December 5, 2010

Page 71: Perl 5.12 for Everyday Use

sub redump { my ($href) = @_; while (my ($k, $v) = each %hash) { say “value for $k is $v”; }}

my %hash = (a => 1, b => 2);

while (my ($k, $v) = each %hash) { print “== $k ==”; redump(\%hash);}

Sunday, December 5, 2010

Page 72: Perl 5.12 for Everyday Use

my @array = qw(a b);

while (my ($k, $v) = each @array) { say “value for $k is $v”;}

Sunday, December 5, 2010

Page 73: Perl 5.12 for Everyday Use

my @array = qw(a b);

while (my ($k, $v) = each @array) { say “value for $k is $v”; do_something(\@array);}

Sunday, December 5, 2010

Page 74: Perl 5.12 for Everyday Use

my @array = qw(a b);

while (my ($k, $v) = each @array) { say “value for $k is $v”;}

Sunday, December 5, 2010

Page 75: Perl 5.12 for Everyday Use

my @array = qw(a b);

while (my ($k, $v) = each @array) { my $string = $part_for_maybe_transient->bodyhandle->as_string; my $transient_pos = _match_position($string, $Not_An_Error); last unless defined $transient_pos; my $permanent_pos = _match_position($string, $Really_An_Error); my $orig_msg_pos = _match_position($string, $Returned_Message_Below); last if _position_before($permanent_pos, $orig_msg_pos); if (_position_before($transient_pos, $orig_msg_pos)) { say “value for $k is $v”; last if $message->effective_type eq ‘multipart/report’; last if !$first_part || $first_part->effective_type ne ‘text/plain’; my $string = $first_part->as_string; last if length($string) > 3000; # added return receipt (fix for bug #41870) last if $string !~ /auto.{0,20}reply|return receipt |vacation|(out|away|on holiday).*office/i; $self->log(“looks like an autoreply, ignoring.”); $self->{type} = “vacation autoreply”; $self->{is_bounce} = 0; return $self; }}

Sunday, December 5, 2010

Page 76: Perl 5.12 for Everyday Use

AVOIDeach @array

Sunday, December 5, 2010

Page 77: Perl 5.12 for Everyday Use

local ??

Sunday, December 5, 2010

Page 78: Perl 5.12 for Everyday Use

use Ancient::Utility qw(stuff);

my $result = do { local $Ancient::Utility::WIDTH = 10; stuff( $input );};

Sunday, December 5, 2010

Page 79: Perl 5.12 for Everyday Use

my $href = { a => 1, b => 2 };

my $result = do { local $href->{a} = 3; stuff( $href );};

Sunday, December 5, 2010

Page 80: Perl 5.12 for Everyday Use

my $href = { a => 1, b => 2 };

my $result = do { delete local $href->{a}; stuff( $href );};

Sunday, December 5, 2010

Page 81: Perl 5.12 for Everyday Use

$]

Sunday, December 5, 2010

Page 82: Perl 5.12 for Everyday Use

$[

Sunday, December 5, 2010

Page 83: Perl 5.12 for Everyday Use

perlvar

$[ - first index of array

Sunday, December 5, 2010

Page 84: Perl 5.12 for Everyday Use

perlvar

$[ - first index of array

- so you can make $array[1] mean first

Sunday, December 5, 2010

Page 85: Perl 5.12 for Everyday Use

perlvar

$[ - first index of array

- so you can make $array[1] mean first

- isn’t that awesome???

Sunday, December 5, 2010

Page 86: Perl 5.12 for Everyday Use

perlvar

$[ - first index of array

- so you can make $array[1] mean first

- isn’t that awesome???

- yeah, about as awesome as Comic Sans

Sunday, December 5, 2010

Page 87: Perl 5.12 for Everyday Use

perlvar

$[

$[ = 1;

for (1 .. $#array) { ...}

Sunday, December 5, 2010

Page 88: Perl 5.12 for Everyday Use

perlvar

$[

for ($[ .. $#array) { ...}

Sunday, December 5, 2010

Page 89: Perl 5.12 for Everyday Use

perlvar

$[

Assigned to $[. Are you some kind of idiot or something? at -e line 123.

Sunday, December 5, 2010

Page 90: Perl 5.12 for Everyday Use

perlvar

$[

Use of assignment to $[ is deprecated at -e line 123.

Sunday, December 5, 2010

Page 91: Perl 5.12 for Everyday Use

More About Deprecations

Sunday, December 5, 2010

Page 92: Perl 5.12 for Everyday Use

@INC

Sunday, December 5, 2010

Page 93: Perl 5.12 for Everyday Use

perlvar

@INC: /usr/pkg/lib/perl5/5.8.0/i386-solaris /usr/pkg/lib/perl5/5.8.0 /usr/pkg/lib/perl5/site_perl/5.8.0/i386-solaris /usr/pkg/lib/perl5/site_perl/5.8.0 /usr/pkg/lib/perl5/site_perl /usr/pkg/lib/perl5/vendor_perl/5.8.0/i386-solaris /usr/pkg/lib/perl5/vendor_perl/5.8.0 /usr/pkg/lib/perl5/vendor_perl

Sunday, December 5, 2010

Page 94: Perl 5.12 for Everyday Use

perlvar

@INC: /usr/pkg/lib/perl5/5.8.0/i386-solaris /usr/pkg/lib/perl5/5.8.0 /usr/pkg/lib/perl5/site_perl/5.8.0/i386-solaris /usr/pkg/lib/perl5/site_perl/5.8.0 /usr/pkg/lib/perl5/site_perl /usr/pkg/lib/perl5/vendor_perl/5.8.0/i386-solaris /usr/pkg/lib/perl5/vendor_perl/5.8.0 /usr/pkg/lib/perl5/vendor_perl

Sunday, December 5, 2010

Page 95: Perl 5.12 for Everyday Use

perlvar

@INC: /usr/pkg/lib/perl5/site_perl/5.8.0/i386-solaris /usr/pkg/lib/perl5/site_perl/5.8.0 /usr/pkg/lib/perl5/site_perl /usr/pkg/lib/perl5/vendor_perl/5.8.0/i386-solaris /usr/pkg/lib/perl5/vendor_perl/5.8.0 /usr/pkg/lib/perl5/vendor_perl /usr/pkg/lib/perl5/5.8.0/i386-solaris /usr/pkg/lib/perl5/5.8.0

Sunday, December 5, 2010

Page 96: Perl 5.12 for Everyday Use

now we can remove stuff from the core distribution

Sunday, December 5, 2010

Page 97: Perl 5.12 for Everyday Use

Class::ISAPod::PlainerShell

Sunday, December 5, 2010

Page 98: Perl 5.12 for Everyday Use

Class::ISAPod::PlainerShellSwitch

Sunday, December 5, 2010

Page 99: Perl 5.12 for Everyday Use

… and …

Sunday, December 5, 2010

Page 100: Perl 5.12 for Everyday Use

Sunday, December 5, 2010

Page 101: Perl 5.12 for Everyday Use

my $x = get_input;

Sunday, December 5, 2010

Page 102: Perl 5.12 for Everyday Use

my $x = get_input;

if ( $x >= 0 ) {

Sunday, December 5, 2010

Page 103: Perl 5.12 for Everyday Use

my $x = get_input;

if ( $x >= 0 ) { do_something for 0 .. $x;

Sunday, December 5, 2010

Page 104: Perl 5.12 for Everyday Use

my $x = get_input;

if ( $x >= 0 ) { do_something for 0 .. $x;} else {

Sunday, December 5, 2010

Page 105: Perl 5.12 for Everyday Use

my $x = get_input;

if ( $x >= 0 ) { do_something for 0 .. $x;} else { ...

Sunday, December 5, 2010

Page 106: Perl 5.12 for Everyday Use

my $x = get_input;

if ( $x >= 0 ) { do_something for 0 .. $x;} else { ...}

Sunday, December 5, 2010

Page 107: Perl 5.12 for Everyday Use

my $x = get_input;

if ( $x >= 0 ) { do_something for 0 .. $x;} else { ...}

Sunday, December 5, 2010

Page 108: Perl 5.12 for Everyday Use

my $x = get_input;

if ( $x >= 0 ) { do_something for 0 .. $x;} else { die “Unimplemented”}

Sunday, December 5, 2010

Page 109: Perl 5.12 for Everyday Use

sub virtual_method { ... }

Sunday, December 5, 2010

Page 110: Perl 5.12 for Everyday Use

sub method_I_will_write_later { ... }

Sunday, December 5, 2010

Page 111: Perl 5.12 for Everyday Use

Unimplemented at Some::Library line 123

Sunday, December 5, 2010

Page 112: Perl 5.12 for Everyday Use

AVOID...

Sunday, December 5, 2010

Page 113: Perl 5.12 for Everyday Use

AVOID...

(except maybe in slides and pseudocode)

Sunday, December 5, 2010

Page 114: Perl 5.12 for Everyday Use

sub virtual_method { confess ‘...’}

sub method_I_will_write_later { confess ‘...’}

Sunday, December 5, 2010

Page 115: Perl 5.12 for Everyday Use

error message improvements

Sunday, December 5, 2010

Page 116: Perl 5.12 for Everyday Use

perldiagSunday, December 5, 2010

Page 117: Perl 5.12 for Everyday Use

perldiagSunday, December 5, 2010

Page 118: Perl 5.12 for Everyday Use

perldiagSunday, December 5, 2010

Page 119: Perl 5.12 for Everyday Use

perldiag

perl -MCGI -e’my $q = CGI->new;’Unrecognized character \xE2 in column 12 at -e line 1.

Sunday, December 5, 2010

Page 120: Perl 5.12 for Everyday Use

perldiag

perl -MCGI -e’my $q = CGI­−->new;’Unrecognized character \xE2; marked by <-- HERE after y $q = CGI<-- HERE near column 12 at -e line 1.

perl -MCGI -e’my $q = CGI->new;’Unrecognized character \xE2 in column 12 at -e line 1.

Sunday, December 5, 2010

Page 121: Perl 5.12 for Everyday Use

perldiag

My Favorite 5.10-ism?

Use of uninitialized value $time in concatenation (.) or string at hello.plx line 9.

$str = “Greetings, $name. Your last login was $last. It is now $time.”;

Sunday, December 5, 2010

Page 122: Perl 5.12 for Everyday Use

perldiag

My Favorite 5.12-ism?

if (length $input->{new_email}) { $user->update_email(...);}

Sunday, December 5, 2010

Page 123: Perl 5.12 for Everyday Use

perldiag

My Favorite 5.12-ism?

Use of uninitialized value in length at - line 3120.

if (length $input->{new_email}) { $user->update_email(...);}

Sunday, December 5, 2010

Page 124: Perl 5.12 for Everyday Use

perldiag

My Favorite 5.12-ism?

if (length $input->{new_email}) { $user->update_email(...);}

Sunday, December 5, 2010

Page 125: Perl 5.12 for Everyday Use

overloading

Sunday, December 5, 2010

Page 126: Perl 5.12 for Everyday Use

my $object = Object->new;

print $object;

Sunday, December 5, 2010

Page 127: Perl 5.12 for Everyday Use

my $object = Object->new;

{ no overloading; print $object;}

Sunday, December 5, 2010

Page 128: Perl 5.12 for Everyday Use

my $filename = get_filename;

if (-d $filename) { handle_directory($filename);}

Sunday, December 5, 2010

Page 129: Perl 5.12 for Everyday Use

package Filename;

use overload ‘-X’ => sub { my ($self, $test) = @_; return $self->is_dir if $test eq ‘d’; return $self->cd_able if $test eq ‘x’; ...;};

Sunday, December 5, 2010

Page 130: Perl 5.12 for Everyday Use

my $file = get_file;

if (-d $file) { handle_directory($file);}

Sunday, December 5, 2010

Page 131: Perl 5.12 for Everyday Use

my $filename = get_file;

if (-d $file and -x _) { handle_directory($file);}

Sunday, December 5, 2010

Page 132: Perl 5.12 for Everyday Use

my $filename = get_filename;

if (-d -x $filename) { handle_directory($filename);}

Sunday, December 5, 2010

Page 133: Perl 5.12 for Everyday Use

AVOIDoverload -X

Sunday, December 5, 2010

Page 134: Perl 5.12 for Everyday Use

y2038

Sunday, December 5, 2010

Page 135: Perl 5.12 for Everyday Use

Sunday, December 5, 2010

Page 136: Perl 5.12 for Everyday Use

~$ perl5.10.0 -E ‘say scalar localtime 2**31-1’

Sunday, December 5, 2010

Page 137: Perl 5.12 for Everyday Use

~$ perl5.10.0 -E ‘say scalar localtime 2**31-1’Mon Jan 18 22:14:07 2038

Sunday, December 5, 2010

Page 138: Perl 5.12 for Everyday Use

~$ perl5.10.0 -E ‘say scalar localtime 2**31-1’Mon Jan 18 22:14:07 2038

~$ perl5.10.0 -E ‘say scalar localtime 2**31’

Sunday, December 5, 2010

Page 139: Perl 5.12 for Everyday Use

~$ perl5.10.0 -E ‘say scalar localtime 2**31-1’Mon Jan 18 22:14:07 2038

~$ perl5.10.0 -E ‘say scalar localtime 2**31’Fri Dec 13 15:45:52 1901

Sunday, December 5, 2010

Page 140: Perl 5.12 for Everyday Use

Sunday, December 5, 2010

Page 141: Perl 5.12 for Everyday Use

~$ perl5.12.0 -E ‘say scalar localtime 2**31-1’

Sunday, December 5, 2010

Page 142: Perl 5.12 for Everyday Use

~$ perl5.12.0 -E ‘say scalar localtime 2**31-1’Mon Jan 18 22:14:07 2038

Sunday, December 5, 2010

Page 143: Perl 5.12 for Everyday Use

~$ perl5.12.0 -E ‘say scalar localtime 2**31-1’Mon Jan 18 22:14:07 2038

~$ perl5.12.0 -E ‘say scalar localtime 2**31’

Sunday, December 5, 2010

Page 144: Perl 5.12 for Everyday Use

~$ perl5.12.0 -E ‘say scalar localtime 2**31-1’Mon Jan 18 22:14:07 2038

~$ perl5.12.0 -E ‘say scalar localtime 2**31’Mon Jan 18 22:14:08 2038

Sunday, December 5, 2010

Page 145: Perl 5.12 for Everyday Use

some non-everyday changes

Sunday, December 5, 2010

Page 146: Perl 5.12 for Everyday Use

A

B C

D

Method Resolution Order

mroSunday, December 5, 2010

Page 147: Perl 5.12 for Everyday Use

A

B C

D

Method Resolution Order

- 5.8 : D, B, A, C

mroSunday, December 5, 2010

Page 148: Perl 5.12 for Everyday Use

A

B C

D

Method Resolution Order

- 5.8 : D, B, A, C

- 5.10: D, B, C, A

mroSunday, December 5, 2010

Page 149: Perl 5.12 for Everyday Use

A

B C

D

Method Resolution Order

- 5.8 : D, B, A, C

- 5.10: D, B, C, A

- 5.12: Anything!

mroSunday, December 5, 2010

Page 150: Perl 5.12 for Everyday Use

A

B C

D

Method Resolution Order

- 5.8 : D, B, A, C

- 5.10: D, B, C, A

- 5.12: F

MRO::DefineSunday, December 5, 2010

Page 151: Perl 5.12 for Everyday Use

use strict;use warnings;

package Booster::Gold;our $VERSION = ‘1.00’;

...

1;

Sunday, December 5, 2010

Page 152: Perl 5.12 for Everyday Use

use 5.12.0;use warnings;

package Booster::Gold 1.00;

...

1;

Sunday, December 5, 2010

Page 153: Perl 5.12 for Everyday Use

use 5.14.0;use warnings;

package Booster::Gold 1.00 { ...}

1;

Sunday, December 5, 2010

Page 154: Perl 5.12 for Everyday Use

http://www.perl.org/get.html

Sunday, December 5, 2010

Page 155: Perl 5.12 for Everyday Use

Any questions?

Sunday, December 5, 2010