160 likes | 287 Views
Software Tools. Introduction to Perl. Introduction to Perl. Perl is a scripting language that makes manipulation of text, files, and processes easy. Perl is a cross between shell programming and the C programming language. Smalltalk (objects). C (numbers). Shell programming
E N D
Software Tools Introduction to Perl
Introduction to Perl • Perl is a scripting language that makes manipulation of text, files, and processes easy. • Perl is a cross between shell programming and the C programming language. Smalltalk (objects) C (numbers) Shell programming (text) C++ (numbers, objects) Perl (text, numbers) Java (objects)
Introduction to Perl • Perl provides a more concise and readable way to do many tasks compared to C++ and shell scripts. • Perl has replaced shell programming as the most popular programming language for text processing and Unix system administration. • Perl was originally designed under Unix, but now also runs under all operating systems (including Windows). • Perl is also a popular language for CGI and GUI programming.
Introduction to Perl • The perl command on our system automatically invokes Perl 5.0. • Some systems use Perl 4.0 as the default, but you also can run a perl 5.0 script explicitly with perl5: $ cat simple $ perl5 simple $ • You can run the script directly if you make the script executable, and the first line is of the following form ( #!/usr/... must start from the first column): $ chmod +x simple $ cat simple #!/usr/local/bin/perl5 -w $ simple $
Basic Syntax • The -w option tells Perl to produce extra warning messages about potential dangers. Use -w in all your Perl programs for now. #!/usr/local/bin/perl5 -w • Whitespace doesn't matter in Perl (like C++), except for #!/usr/local/bin/perl5 -w which must start from column 1 on line 1.
Basic Syntax • All perl statements end in a semicolon ; (like C++) • In Perl, comments begin with # (like shell scripts) • everything after the # to the end of the line is ignored. • # need not be at the beginning of the line. • there are no C++-like multiline comments: /* */
Perl Example 1 • Here is a “hello world” Perl program: $ ls -l -rwxr-xr-x 1 horner cs 52 Mar 2 15:50 hello* $ cat hello #!/usr/local/bin/perl5 -w # comment lines start with the # character print "Hello world\n"; $ hello Hello world $ • The print command sends the string to the screen, and “\n“ adds a newline.
Perl Example 1 • You can optionally use parenthesis around the argument in print: print ("Hello world\n"); or, if your prefer the C++ function style: print("Hello world\n");
Scalar Variables • A scalar variable can hold a single number or string (like shell variables), including integers and floating-point numbers (unlike shell variables). • Scalar variables begin with “$” followed by a letter, and then possibly more letters, digits, or underscores. (e.g., $n, $n1, $name, $first_name). • Scalar variables are case sensitive.
Assigning Scalar Variables • Scalars are assigned using “=“ $scalar = expression; • To assign a value to a scalar variable: $number = 25; $name = "Bill Gates"; • Unlike shell scripts, use the “$” both when the variable is used and assigned: $ cat test1 #!/usr/local/bin/perl5 -w $number = 25; $name = "Bill Gates"; print "$number $name\n"; $ test1 25 Bill Gates $
Numerical Scalar Variables • Internally, all numerical scalar values are stored as floats (so you don’t have to worry about integer division in Perl like you do in C++). • Perl supports the usual C++ numerical operations: $a = 25; # $a is now 25 $a += 5; # $a is now 30 $a *= 3; # $a is now 90 $a++; # $a is now 91 --$a; # $a is now 90 $result = ($a + 2) * 3.4; # $result is 312.8
User Input • Use <STDIN> to get input from the user: $ cat test2 #!/usr/local/bin/perl5 -w print "Enter name: "; $name = <STDIN>; chomp ($name); print "How many girlfriends do you have? "; $number = <STDIN>; chomp($number); print "$name has $number girlfriends!\n"; $ test2 Enter name: Bill Gates How many girlfriends do you have? more than you Bill Gates has more than you girlfriends!
User Input • <STDIN> grabs one line of input, including the newline character. So, after: $name = <STDIN>; if the user typed “Bill Gates[ENTER]”, $name will contain: “Bill Gates\n”. • To delete the newline, the chomp() function takes a scalar variable, and removes the trailing newline if present. (If there is no newline at the end, it does nothing.) • A shortcut to do both operations in one line is: chomp($name = <STDIN>);
$ • As with the shell scripts, use a backslash before $ if you really want to print the dollar sign: $ cat test4 #!/usr/local/bin/perl5 -w print "Enter amount: "; $cost = <STDIN>; print "The total is: \$$cost"; $ test4 Enter amount: 18.50 The total is $18.50 • No need to use chomp() if the newline on $cost can be used when it is printed.
Numerical Example $ cat test6 #!/usr/local/bin/perl5 -w print "Enter height of rectangle: "; $height = <STDIN>; print "Enter width of rectangle: "; $width = <STDIN>; $area = $height * $width; print "The area of the rectangle is $area\n"; $ test6 Enter height of rectangle: 10 Enter width of rectangle: 5 The area of the ractangle is 50 $ test6 Enter height of rectangle: 10.1 Enter width of rectangle: 5.1 The area of the rectangle is 51.51
Backquotes:Command Substitution • You can use command substitution in Perl like in shell scripts: $ whoami gates $ cat test7 #!/usr/local/bin/perl5 -w $user = `whoami`; chomp($user); $num = `who | wc -l`; chomp($num); print "Hi $user! There are $num users logged on.\n"; $ test7 Hi gates! There are 6 users logged on. • Command substitution will usually include a newline, so use chomp().