220 likes | 354 Vues
This guide provides an overview of Perl programming, outlining how computers execute precise instructions akin to following a recipe. It introduces fundamental programming concepts, including variables (scalars, arrays, hashes), operators, and conditionals. Learn how to utilize Perl's syntax, from starting scripts with a shebang line to defining and manipulating variables. This resource is beneficial for beginners looking to understand the basics of coding in Perl, including how to compile and run scripts on various platforms.
E N D
Perl Day 1
Programming • Computers know how to execute a sequence of instructions • Instructions must be very precise. • Think of a recipe • Preheat oven to 400F • Place 1 cup sugar and 1 cup butter into a bowl • Blend until creamy with a high speed mixer • Add in 1 medium sized egg, 2 cups flour, and 1 teaspoon baking soda, ½ spoon salt • Cut into circular shaped cookies 2” in diamater, place on a greased cookie sheet • Bake in preheated oven for 6.5 minutes.
Programming Language • Computers ultimately speak 1’s and 0’s, but we aren’t good at entering long strings of them. • Thus people came up with higher level languages to send instructions to the CPU • This is called Machine or Assembler language • That language is hard to understand, so later people developed higher level languages that are closer to English, which “compile” into assembler language • C, C++ are good examples of this • These languages are compiled for a specific processor (Intel/AMD, vs PowerPC vs. Spark). Thus a program compiled on an Intel processor won’t work on a PowerPC (Mac). • To get around this, people developed interpreted languages which have “interpreters” that are compiled for each platform, that run a even higher level language. • The cost to this is speed • The advantage is portability of code, code written once will execute on Mac, Windows, Unix etc.
Where to get perl • Most Unix machines have it built in. • This includes scooby and scooby2 if you have accounts there. • For windows and mac: • http://www.activestate.com/activeperl/ • You’ll use notepad, vi or some other TEXT editor to write your scripts. • There are also many IDEs you can use, but I’ll leave that up to you to research.
She bangs, she bangs… • All perl programs start with a line called a shabang. #!C:/perl/bin/perl.exe • If you are on Unix: #!/usr/bin/perl • Every line should end in a ; • If you wish to put a comment in your script, simply start the comment with a #: #This is a comment
Having the script talk to you • print print(“hello world\n”); • \n • All lines that are printed should end with a \n inside the quotes. This is to tell perl that you want a “new line” (same as hitting enter). • If you forget to put the \n, sometimes it won’t print at all.
What is a variable • Think of a variable as a bucket into which you can place something. • You can have an unlimited number of buckets. To create a bucket you simply use it. • Buckets have names which must be unique. • They are case sensitive so “a” is different from “A” • Buckets should be named so you can tell what’s in them. This will make your life easier and is mandatory as far as I’m concerned. • In Perl variable names are always named $[something], @[something], or %[something] • $ signifies a Scalar • @ signifies an Array • % signifies a Hash • e.g $a, $b, $enda, $this_is_long, $ThisIsLong
Double Quotes – Double the fun • Anytime in perl you use “ “ whatever is inside the quotes will be interpreted. • Anytime you use ‘ ‘ whatever is inside the quotes will be used literly. print(“$x \n”); • This will output the value of $x print(‘$x \n’); • This will output $x \n
Scalars • A scalar is a variable which holds exactly 1 value. • It usually contains: • a number, • a letter (character), • a set of characters (string) • e.g. $NumStudentsInClass=12; $ClassName=“Learning Perl”;
Buckets of fun • Now that you have a scaler, you can do things with it like print it out: print(“There are $NumStudentsInClass people in this class\n”);
Math • If a scalar contains a number, you can do math: $NumA=7; $NumB=10; $Num=$NumA+$NumB; Print(“$NumA + $NumB = $Num\n”); • Operators include: +, -, / (divide) and * (multiply)
Text • If your scalar has characters or a string in it, you add additional text with the . operator: $Word1=‘Hello’; $Word2=‘World’; $Words=$Word1.’ ‘.$Word2; *or* $Words=“$Word1 $Word2”; • You can add additional text to an existing scalar: $a = ‘Hello’; $a .= ‘ World’; print(“$a\n”); #This prints “hello world”
Conditionals • Sometimes you only want to do things if a scalar contains a certain value: $Num=105; if($Num==105) { print(“Big Number!\n”); }
Tests • If’s can have the following tests: == (checks if numbers are equal) < (checks if numbers are less than) > (checks if numbers are greater than) <= (checks if numbers are less than or equal) >= (checks if numbers are greater than or equal) != (checks if numbers are not equal) eq (checks if characters/strings are identical) ne (checks if characters/strings are not identical)
Maybe we need 2 tests • We can combine tests with and/or • AND: && • OR: || $Num=100; if(($Num>10) && ($Num<100)) { print(“Our numbers is between 10 and 100\n”); } $Name=“Enda”; $HeightInFeet=6; if(($Name eq “Enda”) || ($Height>5)) { print(“It’s either Enda, or a tall person\n”); }
What if we want to do one thing if something is true, and something else otherwise? • Each if can have unlimited number of elsif, and up to 1 else: $Month=3; if($Month==1) { print(“Jan\n”); } elsif($Month==2) { print(“Feb\n”); } elsif($Month==3) { print(“Mar\n”); } … elsif($Month==12) { print(“Dec\n”); } else { print(“Error: Month should be between 1 and 12\n”); }
Additional thing you can check • Does this variable exist? if(defined($a)) • What if you want something to happen if something is NOT true if(! (defined($a)))
More than one thing in a variable • Crazy talk? • No, one way to do this is called an Array. @a=(1,2,3); • There is no restriction on what the values in the array can be, one could be a number, the next a string, the next a number etc. • When you refer to the entire array you use @ instead of $ • Arrays are indexed from 0, so the first element in the array is said to be at “index” 0. The second element is said to be at “index” 1. • When you refer to an individual scalar in the array, you use $ again • e.g. @b=@a; print(“$a[0]\n”);
How many things are in the array? • You can find out by assigning the Array to a scalar • Yes, that doesn’t make sense, it’s a weird perl thing: @Months=(‘jan’,’feb’,’mar’,’apr’,’may’,’jun’,’jul’,’aug’,’sep’,’oct’,’nov’,’dec’); $NumMonths=@Months; print(“There are $NumMonths months\n”);
Command Line • Let’s assume you wrote a Perl Script in a file called doit.pl • You typically execute it like this: • C:\perl\bin\perl doit.pl • What if you want to pass “arguments” into your script: • C:\perl\bin\perl doit.pl 1 2 Enda • Those arguments are automatically stored in an Array called @ARGV • Assuming the above command line: • @ARGV=(1,2,’Enda’); • $ARGV[0] now contains 1 • $ARGV[1] now contains 2 • $ARGV[2] now contains ‘Enda’
Doh! • Often you want to ensure that you got at least 1 argument to your script. • If not there may be no reason to continue. • For example, imagine a script that takes one argument, which should be a number less than 5. It prints out the numbers before that number. • Sometime there is just no point in continuing, you should just die: • die “I asked you to send me a number, you gave me $ARGV[0]…I can do nothing with that…giving up”;
count.pl #!C:/Perl/bin/perl.exe $NumArguments=@ARGV; If($NumArguments<1) { die “Usage: count.pl NUMBER”; } If($ARGV[0]==5) { print(“1 2 3 4 5\n”); } elsif($ARGV[0]==4) { print(“1 2 3 4\n”); } elsif($ARGV[0]==3) { print(“1 2 3\n”); } elsif($ARGV[0]==2) { print(“1 2\n”); } elsif($ARGV[0]==1) { print(“1\n”); } else { die “Error, you must send me a number between 1 and 5 as the first argument”; }