1 / 30

An Introduction to Perl

March 2001 Hesham Wahby Mentor Graphics Egypt. An Introduction to Perl. Presentation Outline. Introduction Hello world Basic Perl language Regular expressions Some common Perl functions A glimpse of some advanced features Conclusion. Introduction: What is Perl?.

Télécharger la présentation

An Introduction to Perl

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. March 2001 Hesham Wahby Mentor Graphics Egypt An Introduction toPerl

  2. Presentation Outline • Introduction • Hello world • Basic Perl language • Regular expressions • Some common Perl functions • A glimpse of some advanced features • Conclusion

  3. Introduction:What is Perl? • Practical Extraction and Report Language. • Created in 1987 by Larry Wall, now maintained by hundreds of people. • A high-level programming/scripting language, combining features from C, Sed, Awk, Unix shells and many others. • Originally designed for text (and binary) string processing. • "Perl is designed to make the easy jobs easy and the hard jobs possible." • Perl motto: "There's more than one way to do it." • "Pathologically Eclectic Rubbish Lister"?

  4. Introduction:Features of Perl • Language features: • Simple to start using. Very rich set of tools. • Basically function oriented, with OO extensions. • C-style program structure. Free-style command syntax. • Weakly-typed variables. Implicit declaration. Sophisticated data structures. • Built-in regular expressions. • Built-in database access. • POSIX compliant. • Extensible using modules.

  5. Introduction:Features of Perl • Compiler features: • Compiled at load-time. • Can be translated to optimized C code. • Can also be directly integrated with other C/C++ code by either calling it or getting called by it. • Built-in debugger.

  6. Introduction:Getting Perl • Perl is GPL: freely distributable, open-source. • Where to get Perl: • The Perl Homepage: http://www.perl.com/ • CPAN (Comprehensive Perl Archive Network): http://www.cpan.org/ • ActivePerl Homepage (for Win32): http://www.activestate.com/ActivePerl/

  7. Hello world! • Example Perl program: "hello.pl": #!/usr/mgc/bin/perl print "Hello world! " • Command line: > perl hello.pl Hello world! > • To run as executable: > chmod +x hello.pl > ./hello.pl

  8. Hello world:Command-line options > perl[options] program.pl program_arguments > perl -e '$x=7; print 23*$x; print "\n"' > preprocess test.pl | perl > perl -h > perl -v > perl -w program.pl > perl -d program.pl > perl -c program.pl > perl -Ipath_for_modules program.pl > perl -Mmodule_name program.pl

  9. Hello world:A more extensive example • #!/usr/mgc/bin/perl • %types = (int => 'Integers', float => 'Reals'); • open INFILE, $ARGV[0]; • @lines = <INFILE>; • close INFILE; • # Search for variables • foreach (@lines) { • if (/^\s*(int|float)\s*(\w*)/) { • push @list[$1], $2; • } • } • $" = ', '; # Print them out • foreach $type (keys %list) { • print "$types[$type]: @list[$type].\n" • }

  10. Basic Perl language:Data types • Scalars $var • Lists (Arrays) @var $var[n] • Hashes (Associative arrays) %var $var[???] • Complex data structures

  11. Basic Perl language:Special variables • Default argument: $_ • Input record separator: $/ • Output field separator: $, • List separator: $" • Process Id: $$ • Program name: $0 • Command-line arguments: @ARGV • Subroutine arguments: @_ • Environment variables: %ENV

  12. Basic Perl language:Context $a = 'Take'; $x = 2; $y = '007'; @list = ('red','green','blue'); print $a . ' ' . $x; $b = "Take $x\n"; $z = $x + $y; $c = "$x + $y"; print "@list", @list, $#list; $i = @list; print $i; print $list[2]; print $list; $listLen = ("purple", @list, 'yellow', @list+2); $, = "\n"; print %ENV; print (keys %ENV); print (values %ENV);

  13. Basic Perl Language:Control constructs if (expression) {block} if (expression) {block} else {block} if (expression) {block} elsif (expression) {block} elsif (expression) {block} ... else {block} unless (expression) {block} unless (expression) {block} else {block}

  14. Basic Perl Language:Control constructs while (expression) {block} while (expression) {block} continue {block} do {block} while (expression); until (expression) {block} for (statement; expression; statement) {block} foreach variable (list) {block} label: goto label;

  15. Basic Perl language:File-handling • Opening a file: open FILE, $file #input open FILE, "<$file"; #input open (FILE, ">$file"); #output open FILE, ">>$file"; #append • Closing a file: close FILE; • Reading from a file: $line = <FILE>; @lines = <FILE>; read FILE, $data, 78, 10; • Writing to a file: print FILE "String.\n"; • Binary files: binmode FILE; • Reading output of a command-line: $output = `ls -l $dir`

  16. Basic Perl language:Subroutines sub Add { local ($x, $sum); $sum = 0; foreach $x (@_) { $sum += $x; } $sum; } $test = &Add (2, $number, @listofnumbers);

  17. Regular expressions:Pattern matching $str = "The large swirls are eddies in the Gulf."; $str =~ m/die/ ; #true $str =~ /gulf/ ; #false $str !~ /gulf/i ; #false $_ = $str; /^the/ ; #false • Modifiers: g: match globally i: case-insensitive matching m: multi-line o: compile once s: single-line x: extended RE

  18. Regular expressions:Basic elements \ Quote next metacharacter . Any character ^ Start of line $ End of line \b \B (Non-)Word boundary \w \W (Non-)Word character \s \S (Non-)Whitespace \d \D (Non-)Digit \t Tab \n Newline $var Match contents of variable ${var} To explicitly delimit variables

  19. Regular expressions:Basic elements | Alternation () Grouping [] Character class [^] Negative character class * Match 0 or more + Match 1 or more ? Match 1 or 0 {n} Match exectly n {n,} Match n or more {n,m} Match n or more, but less than m *? +? ?? {}? Reverse 'greedy' behaviour

  20. Regular expressions:Extracting matched patterns if ($match = ($string =~ /\d+/)) { print $match } ($a, $b) = /(\w)\s(\w)/; @mygroups = (`groups` =~ /\b(\w+)\b/g); /setenv\s*(\w+)\s*(\w+)/; $vars{ nmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm /mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm /$1} = $2;

  21. Regular expressions:Substitution and translation • Substitution: $str =~ s/green/blue/g; s/\b(.)(.*)(.)\b/\3\2\1/g; s/(\d+)/1 + $1/eg; • Translation: tr/abc/ABC/; tr/A-Z/QWERTYUIOPASDFGHJKLZXCVBNM/;

  22. Regular expressions:Some example REs /\/\s*0*\.0*/ ; /[a-z]['")]*[.!?]+['")]*\s/ ; s|/usr/bin|/usr/local/bin| ; $count = s/Mister\b/Mr./g ; s/\d+/$&*2/eg ; s/(\$\w+)/$1/eeg ; $program =~ s { /\* # Match opening delimiter. .*? # Match minimal characters. \*/ # Match closing delimiter. } []gsx;

  23. Some common Perl functions:Strings • length $l = length $string; $l = length; #uses $_ • split @list = split /[,\s]/, $string, 10; ($name, $value) = split /=/; • substr $piece = substr $string, 2, 10; • chop & chomp $c = chop $string; chomp @lines; $/ = ' '; chomp; • pack & unpack

  24. Some common Perl functions:Lists • push & pop push @list, $item; $num = push @list, @items; $item = pop @list; • shift & unshift $item = shift @list; unshift @list, $item; • sort @sorted = sort @list; print sort {$a <=> $b} @list; • splice @sublist = splice @list, 2, 5; splice @list, $off, $len, @newitems;

  25. Some common Perl functions:Miscellaneous • time & localtime ($sec,$min,$hour,$mday,$mon,$year, $wday,$yday,$isdst) = localtime time; $now = localtime; # "Thu Oct 13 04:54:34 1994" • rand & srand srand time; $x = rand 10;

  26. A glimpse of someadvanced features • References and complex data structures • Formats • POD: plain old documentation • Modules • Perl/Tk and Perl/CGI • Databases • OO Perl

  27. Conclusion:When to use Perl • Advanced "shell scripts". • Process management. • Writing quick routines to batch process files or access databases. • Anything involving a lot of string handling (ASCII or binary). • CGI and other web-programming.

  28. Conclusion:When not to use Perl • Heavy computations. • Large applications.

  29. Conclusion:Further resources • Books: • "Programming Perl" 2/e, Larry Wall, Tom Christiansen & Randal Schwartz. (The camel book.) • "Learning Perl" 2/e, Randal Schwartz, Tom Christiansen & Larry Wall. (The llama book.) • "Perl in a Nutshell", Ellen Siever, Stephen Spainhour & Nathan Patwardhan. • "Advanced Perl Programming", Sriram Srinivasan.

  30. Conclusion:Further resources • Web-sites: • Perl Core Documentation: http://www.perldoc.com/ • Nik Silver's Perl Tutorial: http://www.comp.leeds.ac.uk/nik/start.html

More Related