24
Perl Lecture #1 Scripting Languages Fall 2004

Perl Lecture #1 Scripting Languages Fall 2004. Perl Practical Extraction and Report Language -created by Larry Wall -- mid – 1980’s –needed a quick language

  • View
    224

  • Download
    0

Embed Size (px)

Citation preview

Perl Lecture #1

Scripting Languages

Fall 2004

Perl

• Practical Extraction and Report Language

• -created by Larry Wall -- mid – 1980’s– needed a quick language– didn’t want to resort to C– derivative of sed or awk (interpreted language

used on Unix / sed – stream editor.

Perl Intro Cont’d

• fills the gap between C and awk • very powerful language / easy to learn• used to write small scripting programs as well as

larger applications• for the web has been used –cgi scripts – run

forms etc.• also web apps – shopping cart applications• makes use of regular expressions – powerful

sequence of characters

Why Use?

• Perl is free • many Perl ide’s are free – works great

integrated in a Unix environment as most version come with Perl / Mod-Perl and Emb Perl

• Works well in a Windows environment as well

• CPAN – comprehensive Perl Archive Network

#!/usr/bin/perl#Author: Lori N#Description: First program#Date: Today’s Date$string="Top 10";$number=10.0;print "Number is 10.0 and string is 'Top 10'\n\n";$add = $number + $string;print "Adding a number and a string: $add\n";$concatenate = $number . $string;print "Concatenating a number and a string: $concatenate \n";$add2 = $concatenate + $add;print "Adding the previous two results: $add2 \n\n";$undefAdd = 10 + $undefNumber;print "Adding 10 to an undefined variable: $undefAdd\n";print "Printing an undefined variable: $undefVariable(end)\n";

$Scalar

• When we have just one of something we have a scalar – simplest kind of data that Perl Manipulates.– either a number or a string of characters– Perl uses them interchangeably– no need to declare a variable– Perl will figure it out by its usage

Numbers

• int and floating pt numbers • Perl computes with double-precision fp values • Literal

– is not a result of calculation or I/O op – data written directly into the source code

– 0– 2001– -4– also use Octal ( base 8 ) , hexadecimal ( base 16)

Strings

• seq of characters

• they have a literal representation – ‘single quoted’ and “double quoted”

• Single quoted Literals

- ‘string’

- ‘string\’s’

- ‘hello\n’ – no newline

Double Quoted Strings

- Double quoted Literals

--“string”

--“string\n” – newline

--“string \””

String operators:

• “hello” . “world” = helloworld

• “hello” . ‘ ‘ . “world” = hello world

String repetition operator– x – takes its left operand ( a string ) and

makes as many concatenated copies as you specify

– “string” x 3 -- stringstringstring– 5 x 4 -- 5555

Automatic Conversions

• Perl automatically performs conversions between Numbers and Strings.

– by the operator used or they way you attempt to use them in your script

-- be careful this might not work out logically like you’d like it to

Warnings

• Perl’s Built in Warnings.– Command line – perl –w myfile.pl– Or add it to your code #!/usr/bin/perl –w

– use man perldiag to see more useful troubleshooting flags

– also see man perllexwarn man page for warnings that can be turned on and off.

Scalar Variables

• variable – all should be familiar – they hold values

• a scalar variable holds a single scalar value

• they all begin with $Perl_identifier

• can’t start with a digit

• they are also referenced with the leading $

Scalar Assignment

• --assignment • --$income = ‘tolittle’;

• --$tax_amount = 1000;

• --$miles = 100;

• --$distance = $miles * 5;

• Similar binary operators as C

• --+= , *= , .= (string concatenator)

Output

• --print “Hello World\n”;

• --print ( )

• --in a series separated by comma’s

• --print “My income is “, 0 * 10000 , “.or null\n”;

Interpolation of Scalar variables into Strings

• $income = “not much”;

• $expenses = “quite a bit”;

• $lifesavings = “My income is $income but my expenditures are $expenses”;

• or $lifesavings = ‘My income is ‘ . $income . ‘but my expenditures are ‘ . $expenses;

• Book has table on page 32 – Operator Precedence and Associativity

Comparison Operators

• < <= == >= > !=

• Strings – eq , ne , lt , gt , le , ge

if Control Structure

• if ( $variable <= $anothervariable) {

• Print this;

• }

• Curly braces are required

No Boolean Data Type

• No Boolean data type – used simple rules:• --the undef value• --what if you use a scalar value before you give it a value?• --Perl gives it a undef value – neither a string or a number• --acts like zero – or an empty string•• --for Boolean process uses simple rules• --undef is false• --Zero is false – all else true• --empty string ‘ ‘ is false – all else true• --The one exception – since numbers and strings are

equivalent, the string form of zero, ‘0’ has the same value as its numeric form – false

User Input

• --line-input operator <STDIN>• --Perl reads the next complete line of text from standard

input ( up to the first newline)• --uses it as the value of <STDIN>• --its string value has a newline character on the end of

it :• $line = <STDIN>• if ($line eq “\n”) {• print “That was just a blank line!\n”;• }else {• print “That line of input was : $line”;• }

Chomp Operator

• --works on a variable• --variable has to hold a string• --if the string ends in a newline – it removes it• --take input from <STDIN> -- chomp removes \n and• provides us with just the string.• One step:• chomp($variable = <STDIN>)• --chomps return value is the number of characters

removed – 1

while Control Structure

• --same as C++

Tutorial:Simple Perl program:

#!/usr/bin/perl –w##Name: Add Name#Date: Today’s Date#Description: first.pl Ask and Display nameprint “Please enter you name “;$name = <STDIN>;chomp ($name);print “Your name is $name”;

Execute Your Code

• Has to be executable:

• chmod 755 first.pl

• To run two ways:

• perl first.pl

• or ./first.pl