+ All Categories
Home > Documents > Perl 5.10 on OSDC.tw 2009

Perl 5.10 on OSDC.tw 2009

Date post: 19-Jan-2015
Category:
Upload: scweng
View: 1,259 times
Download: 0 times
Share this document with a friend
Description:
Presentation of Perl 5.10 on OSDC.tw 2009, 4/19 by scw
Popular Tags:
69
Perl 5.10
Transcript
Page 1: Perl 5.10 on OSDC.tw 2009

Perl 5.10

Page 2: Perl 5.10 on OSDC.tw 2009

OSDC.tw 2009 4/19

scw at csie dot org

Page 3: Perl 5.10 on OSDC.tw 2009

Who

Page 4: Perl 5.10 on OSDC.tw 2009

Who?

Larry WallRafael Garcia-Suarez

Page 5: Perl 5.10 on OSDC.tw 2009

When

Page 6: Perl 5.10 on OSDC.tw 2009

When?

Perl 5.8.0: July 18, 2002

Page 7: Perl 5.10 on OSDC.tw 2009

When?

Perl 5.8.0: July 18, 2002Perl 5.8.9: Dec 14, 2008

Page 8: Perl 5.10 on OSDC.tw 2009

When?

Perl 5.10.0: Dec 18, 2007

Page 9: Perl 5.10 on OSDC.tw 2009

When?

Perl 5.10.0: Dec 18, 2007Perl 6: By Xmas

Page 10: Perl 5.10 on OSDC.tw 2009

What

Page 11: Perl 5.10 on OSDC.tw 2009

What?

Compatible (almost)major upgrade

Page 12: Perl 5.10 on OSDC.tw 2009

What?

New language featuresInterpreter improvements

Page 13: Perl 5.10 on OSDC.tw 2009

What?

Features and inspirationfrom Perl 6

Page 14: Perl 5.10 on OSDC.tw 2009

Where

Page 15: Perl 5.10 on OSDC.tw 2009

Where?

Debian 5.0 lennyUbuntu 8.10 intrepidFedora 9

Page 16: Perl 5.10 on OSDC.tw 2009

Where?

FreeBSD ports (2009-03-28)ActivePerl 5.10.0.1004

Page 17: Perl 5.10 on OSDC.tw 2009

How

Page 18: Perl 5.10 on OSDC.tw 2009

How?

apt-get install perlyum update perl

Page 19: Perl 5.10 on OSDC.tw 2009

How?

portsnap fetch updatecd lang/perl5.10make install clean

Page 20: Perl 5.10 on OSDC.tw 2009

How?

portsnap fetch updatecd lang/perl5.10make install cleanread /usr/ports/UPDATING !!!

Page 21: Perl 5.10 on OSDC.tw 2009
Page 22: Perl 5.10 on OSDC.tw 2009

Not root?

Page 23: Perl 5.10 on OSDC.tw 2009

Not root!

$ wget http://www.cpan.org/authors/id/\R/RG/RGARCIA/perl-5.10.0.tar.gz

$ tar zxf perl-5.10.0.tar.gz; cd perl-5.10.0$ ./Configure -Dprefix=/usr/local\

-Duserelocatableinc$ make -j 8 all test install

Page 24: Perl 5.10 on OSDC.tw 2009

Why

Page 25: Perl 5.10 on OSDC.tw 2009

a//a

Page 26: Perl 5.10 on OSDC.tw 2009

a||a

Page 27: Perl 5.10 on OSDC.tw 2009

Why?

$a // ”Comment?”

Page 28: Perl 5.10 on OSDC.tw 2009

Why?

$a // ”Comment?”defined $a ?

$a : ”Comment?”

Page 29: Perl 5.10 on OSDC.tw 2009

defined-or

Apply defined-or patch againstperl 5.8 works, too

Page 30: Perl 5.10 on OSDC.tw 2009

defined-or

my $price = mysql select(...)// ”not found”;

say ”Price at $price”

Page 31: Perl 5.10 on OSDC.tw 2009

say

say = print + -lNot enabled by default

Page 32: Perl 5.10 on OSDC.tw 2009

feature

use feature qw( )say, switch, state

Page 33: Perl 5.10 on OSDC.tw 2009

feature

use feature ”:5.10”use 5.010use v5.10perl -E

Page 34: Perl 5.10 on OSDC.tw 2009

feature

switchIn correct English!!

Page 35: Perl 5.10 on OSDC.tw 2009

switchgiven($foo) {

when (undef) { say ’$foo is undefined’ }when (”foo”) { say ’$foo is str ”foo”’ }when ([1,3,5,7,9]) {

say ’$foo is an odd digit’; continue;}when ($ < 100) { say ’$foo under 100’ }when (\&func) { say ’func($foo) true’ }default { die q(I don’t know what to do

Page 36: Perl 5.10 on OSDC.tw 2009

when

my $count = 0;for (@array) {

when (”foo”) { ++$count }}say ”array contains $count copies of ’foo’”;

Page 37: Perl 5.10 on OSDC.tw 2009

given, when & default

given(EXPR) = do{ $ = EXPR; ... }when($foo) = when($ ˜ $foo)default = when(1 == 1)

Page 38: Perl 5.10 on OSDC.tw 2009

smart match

”Smart matching in detail” in perlsyn$a˜ $b the same to $b˜ $akeys for hashcontent for array

Page 39: Perl 5.10 on OSDC.tw 2009

PerlRE

Page 40: Perl 5.10 on OSDC.tw 2009
Page 41: Perl 5.10 on OSDC.tw 2009

Engine

De-recursivised

Page 42: Perl 5.10 on OSDC.tw 2009

Engine

Trie

Page 43: Perl 5.10 on OSDC.tw 2009

Engine

Aho-Corasick

Page 44: Perl 5.10 on OSDC.tw 2009

Named Capture

Page 45: Perl 5.10 on OSDC.tw 2009

Named capture

/(?<ip> \d+\.\d+\.\d+\.\d+).-.-.\[(?<time>.*?)\].”(?<method>GET|POST).(?<request>[ˆ ]+)/x

Page 46: Perl 5.10 on OSDC.tw 2009

Named capture

/(?<ip> \d+\.\d+\.\d+\.\d+).-.-.\[(?<time>.*?)\].”(?<method>GET|POST).(?<request>[ˆ ]+)/x$+{’ip’, ’time’, ’method’, ’request’}

Page 47: Perl 5.10 on OSDC.tw 2009

backreference

/(.)\1//(.)\g1//(.)\g{1}//(.)\g{-1}//(?<letter>.)\g{letter}//(?<letter>.)\k<letter>/

Page 48: Perl 5.10 on OSDC.tw 2009

Regexp::Keep

Page 49: Perl 5.10 on OSDC.tw 2009

Regexp::Keep

s/(.*)\?.*/$1/g

Page 50: Perl 5.10 on OSDC.tw 2009

Regexp::Keep

s/(.*)\?.*/$1/gs/.*\K\?.*//g

Page 51: Perl 5.10 on OSDC.tw 2009

PerlRE not Regular

Page 52: Perl 5.10 on OSDC.tw 2009

Recursive

/ ( # start of line, capture buffer 1< # match an opening angle brack

(? : # match one of:

[ <>]+ # one or more non angle brack

| # ... or ...(?1) # recurse to bracket 1 and try

)∗ # 0 or more times.> # match a closing angle bracket

) # end capture buffer one$/x # end of line

Page 53: Perl 5.10 on OSDC.tw 2009

Recursive

/ ( # start of line, capture buffer 1< # match an opening angle brack

(? : # match one of:(? >

[ <>]+ # one or more non angle brack)

| # ... or ...(?1) # recurse to bracket 1 and try

)∗ # 0 or more times.> # match a closing angle bracket

) # end capture buffer one$/x # end of line

Page 54: Perl 5.10 on OSDC.tw 2009

Recursive

/ ( # start of line, capture buffer 1< # match an opening angle brack

(? : # match one of:

[ <>] + + # one or more non angle brack

| # ... or ...(?1) # recurse to bracket 1 and try

)∗ # 0 or more times.> # match a closing angle bracket

) # end capture buffer one$/x # end of line

Page 55: Perl 5.10 on OSDC.tw 2009

Backtracking Control Verbs

Page 56: Perl 5.10 on OSDC.tw 2009

(*FAIL)

Page 57: Perl 5.10 on OSDC.tw 2009

(*ACCEPT)

Page 58: Perl 5.10 on OSDC.tw 2009

On (*FAIL)...

Page 59: Perl 5.10 on OSDC.tw 2009

On (*FAIL)...

(*PRUNE)restart this trial (:)

Page 60: Perl 5.10 on OSDC.tw 2009

On (*FAIL)...

aaaaaaaaaaaaaa/a*(*PRUNE)a/

Page 61: Perl 5.10 on OSDC.tw 2009

On (*FAIL)...

(*THEN)next branch (::)

Page 62: Perl 5.10 on OSDC.tw 2009

On (*FAIL)...

aaaaaaaaaaaaa/a*(*THEN)a/

Page 63: Perl 5.10 on OSDC.tw 2009

On (*FAIL)...

aaaaaaaaaaaaaaaa/a*(*THEN)a|a+/

Page 64: Perl 5.10 on OSDC.tw 2009

On (*FAIL)...

(*COMMIT)fail the match (:::)

Page 65: Perl 5.10 on OSDC.tw 2009

On (*FAIL)...

aaaaaaaaaaaaaaaa/a*(*COMMIT)a/

Page 66: Perl 5.10 on OSDC.tw 2009

demoparse string

Page 67: Perl 5.10 on OSDC.tw 2009

man perlre

Page 68: Perl 5.10 on OSDC.tw 2009

man perldelta

Page 69: Perl 5.10 on OSDC.tw 2009

Thank you!


Recommended