240 likes | 377 Views
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.
E N D
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 name print “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