An introduce to perl

58 376 0
An introduce to perl

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

An Introduction to Perl Sources and inspirations: http://www.cs.utk.edu/~plank/plank/classes/cs494/494/notes/Perl/lecture.htm l Randal L. Schwartz and Tom Christiansen, “Learning Perl” 2nd ed., O’Reilly Randal L. Schwartz and Tom Phoenix, “Learning Perl” 3rd ed., O’Reilly Dr. Nathalie Japkowicz, Dr. Alan Williams Go O'Reilly! CSI 3125, Perl, page 1 CSI 3125, Perl, page 2 Perl overview (1) • Perl = Practical extraction and report language • Perl = Pathologically eclectic rubbish lister  • It is a powerful general-purpose language, which is particularly useful for writing “quick and dirty” programs. • Invented by Larry Wall, with no apologies for its lack of elegance (!). • If you know C and a fair bit of Unix (or Linux), you can learn Perl in days (well, some of it ). CSI 3125, Perl, page 3 Perl overview (2) • In the hierarchy of programming language, Perl is located half-way between high-level languages such as Pascal, C and C++, and shell scripts (languages that add control structure to the Unix command line instructions) such as sh, sed and awk. • By the way: – awk = Aho, Weinberger, Kernighan – sed = Stream Editor. CSI 3125, Perl, page 4 Advantages of Perl (1) • Perl combines the best (according to its admirers ) features of: Unix/Linux shell programming, The commands sed, grep, awk and tr, C, Cobol. • Shell scripts are usually written in many small files that refer to each other. Perl achieves the functionality of such scripts in a single program file. CSI 3125, Perl, page 5 Advantages of Perl (2) • Perl offers extremely strong regular expression capabilities, which allow fast, flexible and reliable string handling operations, especially pattern matching. As a result, Perl works particularly well in text processing applications. • As a matter of fact, it is Perl that allowed a lot of text documents to be quickly moved to the HTML format in the early 1990s, allowing the Web to expand so rapidly. CSI 3125, Perl, page 6 Disadvantages of Perl • Perl is a jumble! It contains many, many features from many languages and tools. • It contains different constructs for the same functionality (for example, there are at least 5 ways to perform a one-line if statement). It is not a very readable language. • You cannot distribute a Perl program as an opaque binary. That is, you cannot really commercialize products you develop in Perl. CSI 3125, Perl, page 7 Perl resources and versions • http://www.perl.org tells you everything that you want to know about Perl. • What you will see here is Perl 5. • Perl 5.8.0 has been released in July 2002. • Perl 6 (http://dev.perl.org/perl6/) is the next version, still under development, but moving along nicely. The first book on Perl 6 is in stores (http://www.oreilly.com/catalog/perl6es). CSI 3125, Perl, page 8 Scalar data: strings and numbers Scalars need not to be defined or their types declared: Perl understands from context. % cat hellos.pl #!/usr/bin/perl -w print "Hello" . " " . "world\n"; print "hi there " . 2 . " worlds!" ."\n"; print (("5" + 6) . " eggs\n" . " in " . " 3 + 2 = " . ("3" + "2") . " baskets\n" ); invoke Perl % hellos.pl Hello world hi there 2 worlds! 11 eggs in 3 + 2 = 5 baskets CSI 3125, Perl, page 9 Scalar variables Scalar variable names start with a dollar sign. They do not have to be declared. % cat scalar.pl #!/usr/bin/perl -w $i = 1; $j = "2"; print "$i and $j \n"; $k = $i + $j; print "$k\n"; print $i . $j . "\n"; print '$k\n' . "\n"; % scalar.pl 1 and 2 3 12 $k\n CSI 3125, Perl, page 10 Quotes and substitution Suppose $x = 3 Single-quotes ' ' allow no substitution except for the escape sequences \\ and \'. print('$x\n'); gives $x\n and no new line. Double-quotes " " allow substitution of variables like $x and control codes like \n (newline). print("$x\n"); gives 3 (and a new line). Back-quotes ` ` also allow substitution, then try to execute the result as a system command, returning as the final value whatever the system command outputs. $y = `date`; print($y); results in Sun Aug 10 07:04:17 EDT 2003 [...]... of subscripts, we can have anything as a key, and we use curly brackets rather than square brackets • The official name is associative array (known to be implemented by hashing ) • Keys and values can be any scalars; keys are always converted to strings • To refer to a hash as a whole, prefix its name with a % • If you assign a hash to an array, it becomes a simple list CSI 3125, Perl, Hash examples... a @ • You can copy an array into another You can use the operators sort, reverse, push, pop, split CSI 3125, Perl, Command-line arguments Suppose that a Perl program stored in the file cleanUp is invoked in Unix/Linux with the command: cleanUp -o result.htm data.htm The built-in list named @ARGV then contains three elements: ('-o', 'result.htm', 'data.htm') These three element can be accessed as: $ARGV[0]... Perl, Lists and arrays • A list is an ordered collection of scalars An array is a variable that contains a list • Each element is an independent scalar value A list can hold numbers, strings, undef values—any mixture of kinds of scalar values • To use an array element, prefix the array name with a $; place a subscript in square brackets • To access the whole array, prefix its name with a @ • You can... } CSI 3125, Perl, A digression: Perl' s favourite default variable by default, while() { Perl reads into $_ $s = ""; foreach $i (reverse(split(/\s+/, $_))) { $s = "$s$i "; } chop($s); print "$s\n"; } by default, while() { Perl splits $_ too! $s = ""; foreach $i (reverse(split(/\s+/ ))) { $s = "$s$i "; } chop($s); print "$s\n"; } CSI 3125, Perl, Hashes • A hash is similar to an array, but... though not nice, to use a variable without initialization (like $sum) Such a variable is initialized to 0 if it is first used as a number or to the empty string "" if it is first used as a string In fact, it is always undef, variously converted • Perl can, if asked, issue a warning (use the -w flag) • Of course, while is only one of many looping constructs in Perl Read on CSI 3125, Perl, Control statements:... print "The total is $sum.\n"; % oddsum_for.pl 10 The total is 25 We also have do-while and do-until, and we have foreach Read on CSI 3125, Perl, Control statements: loops (5) % cat oddsum_foreach.pl #!/usr/bin /perl -w # Add up some odd numbers $max = ; $sum = 0; foreach $n ( (1 $max) ) { if ( $n % 2 != 0 ) { $sum += $n; } } print "The total is $sum.\n"; % oddsum_foreach.pl 10 The total is 25... elsif % cat names.pl #!/usr/bin /perl -w standard input $name = ; cut newline chomp($name); if ($name gt 'fred') { print "'$name' follows 'fred'\n";} elsif ($name eq 'fred') { print "both names are 'fred'\n";} else { print "'$name' precedes 'fred'\n";} % names.pl Stan 'Stan' precedes 'fred' % names.pl stan 'stan' follows 'fred' my input Perl' s output CSI 3125, Perl, Control statements: loops... global variables is much too limited Subroutines take arguments, and work on them via a predefined list variable @_ or its elements $_[0], $_[1] and so on #!/usr/bin /perl sub max { if ( $_[0] > $_[1] ) { $_[0] } else { $_[1] } } print &max ( 12, 13 ) "\n"; CSI 3125, Perl, Subroutines (4) • $_[0], $_[1] are not fun to work with We can rename them locally, using the my operator—it creates a sub's private... though it is recommended to have them at the beginning • Perl always uses the latest definition in the file—any preceding one is ignored • Certain elements of the syntax are optional • The & might sometimes be omitted (but it is not a good idea) • The return operator may precede a value to be returned (this can be useful): if ( $x > $y ) { return $x } else { return $y } CSI 3125, Perl, Subroutines (3)... statements: loops (1) % cat oddsum_while.pl #!/usr/bin /perl -w # Add up some odd numbers $max = ; $n = 1; while ($n < $max) { $sum += $n; $n += 2; } # On to the next odd number print "The total is $sum.\n"; % oddsum_while.pl 10 Use of uninitialized value at oddnums.pl line 6, chunk 1 The total is 25 my input a warning Perl' s output CSI 3125, Perl, Control statements: loops (2) • End-line comments . An Introduction to Perl Sources and inspirations: http://www.cs.utk.edu/~plank/plank/classes/cs494/494/notes /Perl/ lecture.htm l Randal L. Schwartz and Tom Christiansen, “Learning Perl . documents to be quickly moved to the HTML format in the early 1990s, allowing the Web to expand so rapidly. CSI 3125, Perl, page 6 Disadvantages of Perl • Perl is a jumble! It contains many, many. structure to the Unix command line instructions) such as sh, sed and awk. • By the way: – awk = Aho, Weinberger, Kernighan – sed = Stream Editor. CSI 3125, Perl, page 4 Advantages of Perl (1) • Perl

Ngày đăng: 23/10/2014, 16:11

Từ khóa liên quan

Mục lục

  • An Introduction to Perl

  • Perl overview (1)

  • Perl overview (2)

  • Advantages of Perl (1)

  • Advantages of Perl (2)

  • Disadvantages of Perl

  • Perl resources and versions

  • Scalar data: strings and numbers

  • Scalar variables

  • Quotes and substitution

  • Control statements: if, else, elsif

  • Control statements: loops (1)

  • Control statements: loops (2)

  • Control statements: loops (3)

  • Control statements: loops (4)

  • Control statements: loops (5)

  • Control constructs compared

  • Lists and arrays

  • Command-line arguments

  • Array examples (1)

Tài liệu cùng người dùng

Tài liệu liên quan