Slide 1

Slide 1 text

Perl One Liners perl -e ‘print “Hello World\n”’ Tuesday, November 1, 2011

Slide 2

Slide 2 text

One Theory perl -e ‘...’ - run a one liner with no input perl -ne ‘...’ - run a one liner on every input line perl -pe ‘...’ - same as -ne, AND print each line perl -i files -e ‘...’ - edit files in place Note the quotes. A single quote prevents the shell from grabbing our program Tuesday, November 1, 2011

Slide 3

Slide 3 text

Core One Liners Write once, Use everywhere Tuesday, November 1, 2011

Slide 4

Slide 4 text

perl -pe 1 Tuesday, November 1, 2011

Slide 5

Slide 5 text

Print contents of standard input Print readme.txt: perl -pe 1 readme.txt Create a file named outfile perl -pe 1 > outfile Discussion Tuesday, November 1, 2011

Slide 6

Slide 6 text

perl -ne ‘print if 15..17’ Tuesday, November 1, 2011

Slide 7

Slide 7 text

Discussion Conditional printing of file contents selected lines only: print if 15..17 matched text only: print if /foo/ combined: print if /begin/.../end/ Tuesday, November 1, 2011

Slide 8

Slide 8 text

Discussion use -l if line-end char is an issue perl -nle ‘print if $_ eq reverse’ /usr/share/dict/words Tuesday, November 1, 2011

Slide 9

Slide 9 text

perl -e ‘print reverse <>’ Tuesday, November 1, 2011

Slide 10

Slide 10 text

Discussion Reverse order of lines This words because reverse imposes list context on the <> operator Can also reverse each line using perl -nle ‘print scalar reverse $_’ Tuesday, November 1, 2011

Slide 11

Slide 11 text

Line Numbers Tuesday, November 1, 2011

Slide 12

Slide 12 text

perl -ne ‘print “$. $_”’ Tuesday, November 1, 2011

Slide 13

Slide 13 text

Discussion Print input lines numbered $. is a special perl variable holding current line number Can use to print only even/odd lines: perl -ne ‘print if $. % 2 == 0’ Can use to print only non-blank lines: perl -ne 'print ++$n . " $_" if /./;' Count number of lines in a file perl -ne 'END {print $.}' Tuesday, November 1, 2011

Slide 14

Slide 14 text

Special Blocks: BEGIN & END Tuesday, November 1, 2011

Slide 15

Slide 15 text

perl -lne '$s += $_; END{ print $s/$.}' Tuesday, November 1, 2011

Slide 16

Slide 16 text

Discussion END allows running code when input ends Can use perl variables Note the -l for line ending magic Tuesday, November 1, 2011

Slide 17

Slide 17 text

perl -e '@a=<>; print @a[@a-3..@a]' Tuesday, November 1, 2011

Slide 18

Slide 18 text

Discussion Print n lines from the end of input (like tail) Use a buffer to remember Note the context: @a = <>; Tuesday, November 1, 2011

Slide 19

Slide 19 text

In Place Editing Tuesday, November 1, 2011

Slide 20

Slide 20 text

perl -p -i.bak -e 's/\bfoo\b/bar/g' *.c Original file (unmodified) will be saved as a .bak For example, a.c is backed up as a.c.bak Tuesday, November 1, 2011

Slide 21

Slide 21 text

In Place Editing Use -i for in place editing Use regular expressions for search & replace Can also use: perl -i.old -ne 'print unless 1 .. 10' foo.txt perl -i’*.bak’ -pe 's/(\d+)/ 1 + $1 /ge' file1 file2 Tuesday, November 1, 2011

Slide 22

Slide 22 text

Modules One Liners Write Less, Do More Tuesday, November 1, 2011

Slide 23

Slide 23 text

perl -MFile::Compare -e 'compare("list","bar") and die "Not The Same"' Tuesday, November 1, 2011

Slide 24

Slide 24 text

perl -MFile::Copy -e 'copy("foo","buz")' Tuesday, November 1, 2011

Slide 25

Slide 25 text

Discussion Simple file operations modules Get a list of all core modules installed with your perl using perldoc perlmodlib Get a list of search paths for modules using perl -e ‘perl -e '$,="\n"; print @INC' Tuesday, November 1, 2011

Slide 26

Slide 26 text

CPAN Over 20,000 perl software packages Automatically install using cpan Easy to use Tuesday, November 1, 2011

Slide 27

Slide 27 text

Facebook LWP Finance::Currency::Co nvert::Yahoo Dancer CPAN One Liners Tuesday, November 1, 2011

Slide 28

Slide 28 text

perl -MData::Dumper -MFacebook::Graph -e 'print Dumper( Facebook::Graph->new->query-> find("ynonperek")->request->as_hashref)' Tuesday, November 1, 2011

Slide 29

Slide 29 text

Discussion Facebook::Graph can access all data stored on facebook in a perlish way Use Data::Dumper to print the result Install with cpanm Facebook::Graph Tuesday, November 1, 2011

Slide 30

Slide 30 text

perl -MLWP::Simple -e ‘getstore(“http://www.google.com”, “index.html”);’ URL To Save Store Location Tuesday, November 1, 2011

Slide 31

Slide 31 text

perl -M5.12.0 -MFinance::Currency::Convert::Yahoo -e "say Finance::Currency::Convert::Yahoo::convert (1, 'USD', 'GBP')" Tuesday, November 1, 2011

Slide 32

Slide 32 text

perl -MDancer -e ‘set public => “.”; dance Tuesday, November 1, 2011

Slide 33

Slide 33 text

Discussion Dancer is a mini framework for writing web applications The above starts a debug server, serving all files in current path on port 3000 Install with cpanm Dancer Tuesday, November 1, 2011

Slide 34

Slide 34 text

Q & A Tuesday, November 1, 2011

Slide 35

Slide 35 text

Thank You Ynon Perek [email protected] ynonperek.com Tuesday, November 1, 2011