SlideShare a Scribd company logo
1 of 97
Download to read offline
Perl Programming
1
Danairat T.
Line ID: Danairat
FB: Danairat Thanabodithammachari
+668-1559-1446
Danairat T.
Contents
Module-1: Introduction to Perl Programming
• Basic Variables; string, number, array, hash
• Basic Program Flows; if, unless
• Basic Program Loops; while, for, for each, do,
until
2
Danairat T.
Contents
Module-2: Regular Expression
• Introduction to Regular Expression
• Matching pattern
• Special characters handling
• Substitute
• Global substitutions
3
Danairat T.
Contents
Module-3: File Handling
• Open file for Read or Write
• Close file handle
• File handle Manipulation
• Using regular expression in file handling
4
Danairat T.
Contents
Module-4: Connecting to Database
• Understand Perl built-in associate array file
• Using module Perl DBI
• Connection to MySQL or Oracle database
• Insert/Update/Delete/Select by Perl
5
Perl Programming
01 - Introduction to Perl Programming
6
Danairat T.
Line ID: Danairat
FB: Danairat Thanabodithammachari
+668-1559-1446
Danairat T.
What is Perl?
(Practical Extraction and Report Language )
• Perl, release in 1987, is a high-level
programming language written by Larry Wall.
Perl's process, file, and text manipulation
facilities make it particularly well-suited for
tasks system utilities, system management
tasks, database access, networking. These
strengths make it especially popular with
system administrators.
7
Danairat T.
Which version of Perl should I use?
• No one is actively supporting Perl 4. Five years ago it
was a dead camel carcass
• There is no Perl 6 release scheduled.
• The immediate releases are Perl 5.8 (i.e. Perl5.8.x )
8
Danairat T.
OS Platforms Support
• UNIX: More or less every UNIX or UNIX-like operating system ever created, notably
Linux , Solaris, AIX, IRIX, HP/UX, BSD, and Tru64
• MS Windows: DOS, Windows 3.1, 95, 98, NT and 2000
• Other Desktop OSs: Apple Macintosh (68k and PPC, both pre and post MacOS X),
Acorn Risc OS, Amiga, BeOS, OS/2, and many others
• Mainframes: AS/400, OS390, VMS and OpenVMS, Stratus (VOS), and Tandem
• PDAs: EPOC (Psion/Symbian), but not PalmOS or Windows CE at time of writing,
although porting efforts are being made for both platforms
9
Danairat T.
Identify the Perl version
• perl –v
• perl -V
10
Danairat T.
www.CPAN.org
• CPAN stands for
Comprehensive Perl
Archive Network,
containing libraries,
documentation, and many
Perl third-party modules
and extensions
11
Danairat T.
Install Perl
• On Unix System
– pkgadd -d /cdrom/sol_10_1009_x86/Solaris_10/Product SUNWperl584core
– pkgadd –d /cdrom/sol_10_1009_x86/Solaris_10/Product SUNWperl584usr
– pkgadd –d /cdrom/sol_10_1009_x86/Solaris_10/Product SUNWperl584man
• On Windows System
– run ActivePerl-5.8.9.826-MSWin32-x86-290470.msi
Available for download at www.activestate.com
12
Danairat T.
Perl file structure and location
• Perl executable: /usr/perl5/bin/perl or /usr/bin/perl
• Perl Pain Old Documentation: /usr/perl5/pod
• Perl Manual: /usr/perl5/man
13
Danairat T.
Perl Libraries (Perl Modules)
• The Perl Libraries directories
– /usr/perl5/5.8.4/lib/i86pc-solaris-64int
– /usr/perl5/5.8.4/lib
– /usr/perl5/site_perl/5.8.4/i86pc-solaris-64int
– /usr/perl5/site_perl/5.8.4
– /usr/perl5/site_perl
– /usr/perl5/vendor_perl/5.8.4/i86pc-solaris-64int
– /usr/perl5/vendor_perl/5.8.4
– /usr/perl5/vendor_perl
14
Danairat T.
Perl Library (The modules for Unix)
http://www.cpan.org/modules/01modules.index.html
15
Danairat T.
Perl Library (PPM modules for windows)
http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/
16
Danairat T.
Install Perl Modules on Unix
gzip -dc yourmodule.tar.gz | tar -xof -
cd /your/new/lib/to/install/
perl Makefile.PL
make
make test
make install
Or, if you have internet access
perl -MCPAN -e shell
cpan> i /Time/
cpan> install Time::CTime
17
Danairat T.
Install Perl Modules on Unix
bash-3.00# cd /tmp/Class-Simple-0.19
bash-3.00# perl Makefile.PL
Checking if your kit is complete...
Looks good
Writing Makefile for Class::Simple
bash-3.00# /usr/ccs/bin/make
cp lib/Class/Simple.pm blib/lib/Class/Simple.pm
Manifying blib/man3/Class::Simple.3
bash-3.00# /usr/ccs/bin/make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0,
'blib/lib', 'blib/arch')" t/*.t
t/anon.............ok
t/attributes.......ok
t/Class-Simple.....ok
t/inherit..........ok
t/isa..............ok
t/nonew............ok
t/override.........ok
All tests successful.
Files=13, Tests=95, 3 wallclock secs ( 0.99 cusr + 0.52 csys = 1.51 CPU)
bash-3.00# /usr/ccs/bin/make install
Installing /usr/perl5/site_perl/5.8.4/Class/Simple.pm
Installing /usr/perl5/5.8.4/man/man3/Class::Simple.3
Writing /usr/perl5/site_perl/5.8.4/i86pc-solaris-64int/auto/Class/Simple/.packli
st
Appending installation info to /usr/perl5/5.8.4/lib/i86pc-solaris-64int/perlloca
l.pod
bash-3.00#
Example:-
18
Danairat T.
Install Perl Module on Windows
1. Unzip the lib file
2. Cd to the downloaded lib
3. ppm install yourdownloadedlib.ppd
19
Danairat T.
Perl Programming Structure
#!/usr/bin/perl
print "Hello, world!n"; # print to the console
• Declarations and Statements
• Semicolons
• Whitespace
• Comments
20
Danairat T.
Syntax Check and Warning
#!/usr/bin/perl
use strict;
use warnings;
print "Hello, world!n";
exit (0); # The 0 is to exit the program with success, 1 is to exit with failure
21
The strict checks for unsafe programming constructs. Strict forces a
programmer to declare all variables as package or lexically scoped variables.
The programmer also needs to use quotes around all strings, and to call
each subroutine explicitly.
The warnings print warnings when the Perl compiler detects a possible
typographical error and looks for potential problems with mainly look for the
most common syntax mistakes and common scripting bugs
Danairat T.
Basic variable - String
• Strings are sequences of characters.
• String literals are usually delimited by either
single (') or double quotes (").
• Double-quoted: To interpret backslash and
variable
• Single-quoted: Not to interpret backslash and
variable except  and '
22
Danairat T.
Basic variable - String
Double-Quoted String Representations
Code Meaning
nnnn Newline
rrrr Carriage return
tttt Horizontal tab
 Backslash
"""" Double quote
b Backspace
u Force next character to uppercase
l Force next character to lowercase
U Force all following characters to uppercase
L Force all following characters to lowercase
Q Backslash all following non-alphanumeric characters
23
Danairat T.
Basic variable - String
• Examples
#!/usr/bin/perl
use strict;
use warnings;
print 'tThis is a single quoted string.n';
print "tThis is a double quoted string.n";
exit(0);
StringEx01.pl
24
Danairat T.
Basic variable - String
• Examples
#!/usr/bin/perl
use strict;
use warnings;
print "C:WINNTProfilesn";
print 'C:WINNTProfiles ', "n";
exit(0);
StringEx02.pl
25
Danairat T.
Basic variable - String
• Examples
#!/usr/bin/perl
use strict;
use warnings;
print " "Hi," said Jack. "Have you read Slashdot today?" ";
exit(0);
StringEx03.pl
26
Danairat T.
Basic variable - String
• Examples
#!/usr/bin/perl
use strict;
use warnings;
print ' "Stop," see this. ', "n";
exit(0);
StringEx04.pl
27
Danairat T.
Quote Constructs
Customary Generic Meaning Interpolates
'''''''' q//q//q//q// Literal string No
"""""""" qqqqqqqq//////// Literal string Yes
() qw// Word list No
// m// Pattern match Yes
s/// s/// Pattern substitution Yes
y/// tr/// Character translation No
28
Danairat T.
Basic variable - String
• The use of q for single quote and qq for double
qoute
• Examples:-
#!/usr/bin/perl
use strict;
use warnings;
print q/"Hi," said Jack. "Have you read Slashdot today?"/ . qq/n/;
print q|"Hi," said Jack. "Have you read Slashdot today?"| . qq|n|;
print q#"Hi," said Jack. "Have you read Slashdot today?"# . qq#n#;
print q("Hi," said Jack. "Have you read Slashdot today?") . qq(n);
print q<"Hi," said Jack. "Have you read Slashdot today?"> . qq<n>;
exit(0);
StringEx05.pl
29
Results:-
"Hi," said Jack. "Have you read Slashdot today?"
"Hi," said Jack. "Have you read Slashdot today?"
"Hi," said Jack. "Have you read Slashdot today?"
"Hi," said Jack. "Have you read Slashdot today?"
"Hi," said Jack. "Have you read Slashdot today?"
Danairat T.
Basic variable - String
• The use of qw for array initialization
• Examples:-
#!/usr/bin/perl
use strict;
use warnings;
my @array1 = ('a', 'lot', 'of', 'quotes', 'is', 'not', 'very', 'legible');
print $array1[1] . "n";
# same result by using the qw and the qw will not interpolate variables
my @array2 = qw(a lot of quotes is not very legible);
print $array2[1] . "n";
# same result
my @array3 = qw(
a lot
of quotes
is not
very legible
);
print $array3[1] . "n";
exit(0);
StringEx06.pl
30
Results:-
lot
lot
lot
Danairat T.
Basic variable - String
• The use of print <<EOF to write an amount of text within your
program. Perl will interpret as double quote. This can be used
as a format print loop purpose.
• Examples:-
#!/usr/bin/perl
use strict;
use warnings;
print<<EOT;
This is a here-document. It starts on the line after the two arrows,
and it ends when the text following the arrows is found at the beginning a
line, like this
EOT
exit(0);
StringEx07.pl
31
Danairat T.
The $ sign for scalar variable
• Perl use $ represent scalar variable for both
string and number.
32
$theString = “test string”;
$theNumber = 25;
#!/usr/bin/perl
use strict;
use warnings;
my $theString = "test string";
print $theString . "n"; # The . is an concatenate and n is new line
exit(0);
ScalarVarEx01.pl
Results:-
test string
Danairat T.
Scope of variable my, local
• my
The variable is not visible outside the block in which
it is defined. Recommend to use my variable as it is
faster than local.
• local
Local saves the value of a global variable. Here also
the variable is not accessible outside the block but it
is visible in the subroutine which is called from the
original block. You may need to use local when you
write code in Perl 4
33
Danairat T.
Basic variable - Number
• Perl interpret both float and integer as 32 bits
according to the C compiler that compiled Perl
used.
Integer Literals
12
15
-2004
3485
1_000_000
Float Literals
1.25 # about 1 and a quarter
7.25e45 # 7.25 times 10 to the 45th power
-6.5e24 # negative 6.5 times 10 to the 24th
-12e-24 # negative 12 times 10 to the -24th
-1.2E-23 # another way to say that
34
Danairat T.
Basic variable - Number
• To represent the non-decimal, we need to provide prefix for
Binary (0b), Octal (0), Hexadecimal (0x)
• Examples:-
#!/usr/bin/perl
use strict;
use warnings;
print 255, "n"; # decimal number
print 0b11111111, "n"; # 0 or 1
print 0377, "n"; # 0 to 7
print 0xFF, "n"; # 0 to F
exit(0);
NumberEx01.pl
35
Results:-
255
255
255
255
Danairat T.
Number Conversion
Convert BIN to DEC
• $number = 0b10110110;
Convert OCT to DEC
• $dec = 033653337357;
• $dec = oct("33653337357");
Convert HEX to DEC
• $dec = 0xDEADBEEF;
• $dec = hex("DEADBEEF");
Convert DEC to BIN
• $bin = sprintf("%b", 3735928559);
Convert DEC to OCT
• $oct = sprintf("%o", 3735928559);
Convert DEC to HEX
• $hex = sprintf("%X", 3735928559); # upper case A-F
• $hex = sprintf("%x", 3735928559); # lower case a-f
36
Danairat T.
Operators Precedence
Associativity Operator
Left The "list" operators (leftward) eg. print(), sort(),
Left -> (method call, dereference)
Nonassociative ++++++++ -------- (autoincrement, autodecrement)
Right ******** (exponentiation)
Left =~=~=~=~ !~!~!~!~ (matches, doesn't match)
Left **** //// %%%% xxxx (multiply, divide, modulus, string replicate)
Left ++++ ---- .... (add, subtract, string concatenate)
Left << >>
Nonassociative Named unary operators (like chomp)
Nonassociative < > <= >= lt gt le ge
Nonassociative == != <=> eq ne cmp
Left & (bit-and)
Left | ^ (bit-or, bit-xor)
Nonassociative .. ... (noninclusive and inclusive range)
Right ?: (if-then-else)
Right = += -= *=, etc. (assignment and binary-assignment)
Left , => (comma and comma-arrow)
Nonassociative List operators (rightward)
Right not (logical not)
Left and (logical and)
Left or xor (logical or, logical xor)
37
Danairat T.
Operators
• Examples:-
#!/usr/bin/perl
use strict;
use warnings;
print 2 + 118 . "n";
print 3 + 2 * 15 . "n";
print(3 + 2) * 15; # list operator impact to print()
print "n";
print((3 + 2) * 15);
print "n";
print 2**4 . ", " . -2**4 . "n";
print (2**4 . ", " . (-2)**4 . "n");
exit(0);
Results:-
120
33
5
75
16, -16
16,16
OperatorEx01.pl
38
Danairat T.
Repetition Operators
• The string repetition operator (x) does to a left operand string.
The number 5 is converted to the string "5". This new string is
then copied four times as 5555
• Examples:-
#!/usr/bin/perl
use strict;
use warnings;
print ((3+2) x 4);
exit(0);
RepetitionEx01.pl
39
Results:-
5555
Danairat T.
Comparison Operators
• Perl always requires you to specify the proper type of
comparison, whether it be numeric or string.
Remarks: 7 is less than 30, but the string "30" comes before the string "7" (because the
ASCII value for 3 is less than the value for 7)
Comparison Numeric String
Equal == eq
Not equal != ne
Less than < lt
Greater than > gt
Less than or equal to <= le
Greater than or equal to >= ge
40
Danairat T.
Comparison Operators
• Examples:-
#!/usr/bin/perl
use strict;
use warnings;
print 15==15; # true
print "n";
print 15==20; # false
print "n";
print 100 < 5; # false
print "n";
print 100 lt 5; # true
exit (0);
CompareEx01.pl
41
Results:-
1
1
Danairat T.
String Operator
• Built-in Auto Converting Strings into Numbers
• Examples:-
#!/usr/bin/perl
use strict;
use warnings;
# define a numeric string
my $scalar = '123.4e5';
# evaluate it in original string context
print $scalar; # produces '123.4e5'
print "n";
# evaluate it in numeric context
print $scalar + 1; # produces '12340001'
print "n";
exit(0);
AutoConvertEx01.pl
42
Results:-
123.4e5
12340001
Danairat T.
String Operator
• Converting Strings into Array using Split unary operator
• Examples:-
#!/usr/bin/perl
use strict; use warnings;
$csv = "one , two , three , four , five , six";
@list1 = split(', ' , $csv); # function style
print @list1;
print "n";
@list2 = split /, /, $csv; # regular expression style
print @list2;
print "n";
@list3 = split /s*, s*/, $csv; # regular expression style with trim the delimiter
print @list3;
print "n";
exit(0);
Results:-
one two three four five six
one two three four five six
onetwothreefourfivesix
SplitStringEx01.pl
43
Danairat T.
Perl Array
• A dynamic storage for a list which can be
grown, shrunk, alter. The array variable starts
prefix with an at-sign @
44
@numberArray = (1, 2, 3, 4, 5, 6);
@stringArray = ('one', 'two', 'three', 'four', 'five');
@myArray = ('one', 'two', 'three', 4, 'five');
@stringArray = qw(one two three four five);
@stringArray = qw(
one
two
three
four
five
);
Danairat T.
Perl Array - Examples
• Assign values to array and loop display value from array
45
#!/usr/bin/perl
use strict;
use warnings;
my @array = (); # initialize an array
$array[0] = "1st ";
$array[4] = "5th ";
@array[1..3, 5, -1] = ("2nd ", "3rd ", "4th ", "6th ", "Last");
foreach my $theRest (@array ) {
print $theRest;
}
exit(0);
ManipulateArrayEx01.pl
Results:-
1st 2nd 3rd 4th 5th Last
Danairat T.
Perl Array - Examples
• Using scalar to get arrays size and last position of an array $#
46
#!/usr/bin/perl
use strict;
use warnings;
my @myArray = ('one', 'two', 'three', 4, 'five');
my $arraySize = scalar(@myArray);
print "The Array size is: " . $arraySize . "n";
print "The last element is: " . $myArray[$#myArray] . "n";
exit(0);
ArraySizeEx01.pl
Results:-
The Array size is: 5
The last element is: five
Danairat T.
Perl Array - Examples
• Adding element to array using push
47
#!/usr/bin/perl
use strict;
use warnings;
my @myArray = ('one', 'two', 'three', 4, 'five');
$myArray[scalar(@myArray)] = ‘six’; # adding the new element;
push (@myArray, ’seven’);
print "The Array size is: " . scalar(@myArray) . "n";
print "The last element is: " . $myArray[$#myArray] . "n";
exit(0);
AddingArrayEx01.pl
Results:-
The Array size is: 7
The last element is: seven
Danairat T.
Perl Array - Examples
• Removing last elements from an Array using pop
48
#!/usr/bin/perl
use strict;
use warnings;
my @array = (1, 2, 3, 4, 5, 6);
push (@array, '7');
print "@arrayn";
my $last = pop @array;
print "$lastn"; # print 7
print "@arrayn";
exit(0);
PopArrayEx01.pl
Results:-
1 2 3 4 5 6 7
7
1 2 3 4 5 6
Danairat T.
Perl Array - Examples
• Adding element to array at position zero using unshift
• The below is equivalent to: splice @array, 0, 0, @more;
49
#!/usr/bin/perl
use strict;
use warnings;
my @myArray = ('one', 'two', 'three', 4, 'five');
unshift (@myArray, 'first_added', 'second_added'); # adding element at first
print "The Array size is: " . scalar(@myArray) . "n";
print "The last element is: " . $myArray[$#myArray] . "n";
print "The array element values are: @myArray n";
exit(0);
UnshiftArrayEx01.pl
Results:-
The Array size is: 7
The last element is: five
The array element values are: first_added second_added one two three 4 five
Danairat T.
Perl Array - Examples
• Removing first elements from an Array using shift
50
#!/usr/bin/perl
use strict;
use warnings;
my @array = (1, 2, 3, 4, 5, 6);
print "The starting array is @arrayn"; # array is now (1, 2, 3, 4, 5, 6, 7)
unshift (@array, -1, 0);
print "Array after unshift is @arrayn"; # array is now (-1, 0, 1, 2, 3, 4, 5, 6)
my $shiftValue = shift @array; # remove the first element of the array
print "shiftValue is: " . $shiftValue . "n";
$shiftValue = shift @array; # remove the first element of the array
print "shiftValue is: " . $shiftValue . "n";
print "The rest elements are: @arrayn";
exit(0);
ShiftArrayEx01.pl
Results:-
The starting array is 1 2 3 4 5 6
Array after unshift is -1 0 1 2 3 4 5 6
shiftValue is: -1
shiftValue is: 0
The rest elements are: 1 2 3 4 5 6
Danairat T.
Perl Array - Examples
• Flexible copy an array
51
#!/usr/bin/perl
use strict;
use warnings;
my @myArray = ('one', 'two', 'three', 4, 'five');
my $firstPosition; my @myArray2 = (); my @myArray3 = ();
($firstPosition, @myArray2[0..1], @myArray3) = @myArray;
print $firstPosition . "n"; # print the first element
foreach my $theRest (@myArray2) {
print $theRest . "n"; # print element from myArray2
}
exit(0);
CopyArrayEx01.pl
Results:-
one
two
three
Danairat T.
Perl Array - Examples
• Resizing and Truncating an Array. The below is fastest way to
resize an array.
52
#!/usr/bin/perl
use strict;
use warnings;
my @myArray = ("apple ", "banana ", "orange ");
print "Array size is: ". scalar(@myArray) . "n";
$#myArray = 99; # increase an array size to 100 without assign value
print "Array size is: ". scalar(@myArray) . "n";
$#myArray = 1; # decrease an array size to 2
print "Array size is: ". scalar(@myArray) . "n";
print "Array element values are: @myArray n";
exit(0);
ResizeArrayEx01.pl
Results:-
Array size is: 3
Array size is: 100
Array size is: 2
Array element values are: apple banana
Danairat T.
Perl Array - Examples
• Remove all elements
53
#!/usr/bin/perl
use strict;
use warnings;
my @myArray = ("apple ", "banana ", "orange ");
print "Array size is: ". scalar(@myArray) . "n";
@myArray = (); # remove all elements and return memory to OS
print "Array size is: ". scalar(@myArray) . "n";
exit(0);
RemoveAllElementsArrayEx02.pl
Results:-
Array size is: 3
Array size is: 0
Danairat T.
Perl Array - Examples
• Sorting Arrays using sort
54
#!/usr/bin/perl
use strict;
use warnings;
my @words = ('here', 'are', 'some', 'words');
my @alphabetical = sort @words;
print "The starting array: @words n";
print "The sorted array: @alphabetical n";
exit(0);
SortArrayEx02.pl
Results:-
The starting array: here are some words
The sorted array: are here some words
Danairat T.
Perl Array - Examples
• Reversing Arrays using reverse. This is only to reverse an array
but not to do reverse-sort array.
55
#!/usr/bin/perl
use strict;
use warnings;
my @words = ('here', 'are', 'some', 'words');
my @alphabetical = reverse @words;
print "The starting array: @words n";
print "The reversed array: @alphabetical n";
exit(0);
ReverseArrayEx02.pl
Results:-
The starting array: here are some words
The sorted array: words some are here
Danairat T.
Perl Array - Examples
• Reversing Sort Arrays using sort
56
#!/usr/bin/perl
use strict;
use warnings;
my @words = ('here', 'are', 'some', 'words');
my @alphabetical = sort {$b cmp $a} @words;
print "The starting array: @words n";
print "The reversed sort array: @alphabetical n";
exit(0);
ReverseArrayEx02.pl
Results:-
The starting array: here are some words
The reversed sorted array: words some here are
Danairat T.
Perl Array - Examples
• Numbering sort using {$a <=> $b}. The built-in global variables
$a and $b for sorting algorithms
57
#!/usr/bin/perl
use strict;
use warnings;
my @words = ('100', '5', '2000', '9');
my @sortArray = sort {$a <=> $b} @words;
print "The starting array: @words n";
print "The sorted array: @sortArray n";
exit(0);
NumberSortedArrayEx02.pl
Results:-
The starting array: 100 5 2000 9
The sorted array: 5 9 100 2000
Danairat T.
Perl Array - Examples
• Alphanumeric (mixed) sort using {int($a) <=> int($b) or $a cmp $b}. The
<=> is for number and cmp is for character comparison.
58
#!/usr/bin/perl
use strict;
use warnings;
my @words = ("1000", "zebra", "100", "apple", "5", "2000", "9");
my @sortArray = sort {int($a) <=> int($b) or $a cmp $b} @words;
print "The starting array: @words n";
print "The sort array: @sortArray n";
exit(0);
AlphaSortedArrayEx02.pl
Results:-
Argument "zebra" isn't numeric in int at test.pl line 6.
Argument "apple" isn't numeric in int at test.pl line 6.
The starting array: 1000 zebra 100 apple 5 2000 9
The sort array: apple zebra 5 9 100 1000 2000
Danairat T.
Perl Array - Examples
• Converting array into scalar using join
59
#!/usr/bin/perl
use strict;
use warnings;
my @words = ("1000", "zebra", "100", "apple", "5", "2000", "9");
print "The starting array: @words n";
@words = sort {int($a) <=> int($b) or $a cmp $b} @words;
print "The sorted array: @words n";
my $scalarWords = join ("|", @words);
print "The result is: $scalarWords n";
exit(0);
SalarFromArrayEx02.pl
Results:-
The starting array: 1000 zebra 100 apple 5 2000 9
Argument "zebra" isn't numeric in int at test.pl line 7.
Argument "apple" isn't numeric in int at test.pl line 7.
The sorted array: apple zebra 5 9 100 1000 2000
The result is: apple|zebra|5|9|100|1000|2000
Danairat T.
Perl Array - Examples
• Converting scalar to array using split
60
#!/usr/bin/perl
use strict;
use warnings;
my $words = "apple|zebra|5|9|100|1000|2000";
my @wordsArray = split (/|/, $words);
print "The result is: @wordsArray n";
exit(0);
ArrayFromSplitEx02.pl
Results:-
The result is: apple zebra 5 9 100 1000 2000
Danairat T.
Perl Array - Examples
• Replace and insert elements in array using splice
splice @array, $from, $quantity, @replacement;
61
#!/usr/bin/perl
use strict;
use warnings;
my @array = ('a', 'b', 'c', 'd', 'e', 'f');
# replace third element with three new elements
my $removed = splice @array, 2, 1, (1, 2, 3);
print "The array values are: @array n";
print "The removed element is: $removed n";
exit(0);
ReplaceInsertArrayEx01.pl
Results:-
The array values are: a b 1 2 3 d e f
The removed element is: c
Danairat T.
Perl Array - Examples
• Remove elements in array using splice
splice @array, $from, $quantity;
62
#!/usr/bin/perl
use strict;
use warnings;
my @array = ('a', 'b', 'c', 'd', 'e', 'f');
# remove elements 2, 3 and 4
my @removed = splice @array, 2, 3; # start from position#2 for 3 positions
print "The rest elements are: @arrayn";
print "The removed elements are: @removedn";
exit(0);
RemoveElementsArrayEx01.pl
Results:-
The rest elements are: a b f
The removed elements are: c d e
Danairat T.
Perl Array - Examples
• Remove elements to the end of the array using splice
splice @array, $quantity;
63
#!/usr/bin/perl
use strict;
use warnings;
my @array = ('a', 'b', 'c', 'd', 'e', 'f');
# remove last three elements
my @last_4_elements = splice @array, -4; # start from last pos of 4 to the end
print "@arrayn";
print "@last_4_elementsn";
exit(0);
RemoveElementsArrayEx02.pl
Results:-
a b
c d e f
Danairat T.
Date and Time
• The epoch
The epoch system, as used most operating systems, represents a datetime
as the number of seconds after a specific date and time. For Unix systems,
the epoch began on January 1, 1970 at midnight GMT (UTC).
time()
• Local time
The local time is UTC plus the local time zone offset. While UTC is great for
internal use, most people want to see datetimes in terms of their location.
localtime()
64
Danairat T.
Date and Time
• Example:-
65
#!/usr/bin/perl
use strict;
use warnings;
my $myEpoch = time(); # time in second that counting from 1 Jan 1970
print $myEpoch . "n";
my $myDatetime = localtime($myEpoch); # auto convert to scalar
print $myDatetime . "n";
exit(0);
DateAndTimeEx01.pl
Results:-
1258345951
Mon Nov 16 11:32:31 2009
Danairat T.
Date and Time
• The Local Time
The Local Time can be return value in scalar or in array and
provide you to get the value in day, month, year, hh, mm, etc.
66
$sec - seconds [0-60, to allow for leap seconds]
$min - minutes [0-59],
$hour - hours [0-23],
$mday - day of the month [1-31] (Note: from '1'),
$mon - month [0-11] (Jan. is '0'),
$year - number of years since 1900 (1999 is 99; 2000 is 100),
$wday - day of the week [0-6] (Sun. is '0'),
$yday - day of the year [0-365] (total of 366 possible for leap year)
$isdst - daylight savings time [0,1] -- returns boolean '0' or '1' if Daylight Savings active.
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time());
Danairat T.
Date and Time
• Example:-
67
#!/usr/bin/perl
use strict;
use warnings;
my $myEpoch = time(); # time counting from 1 Jan 1970
print $myEpoch . "n";
my $myDatetime = localtime($myEpoch); # auto convert to scalar
print $myDatetime . "n";
my @myTimeData = localtime($myEpoch); # same as localtime() but use the fixed value from previous var
print join (" ", @myTimeData) . "n";
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = @myTimeData;
printf "%4d-%02d-%02d %02d:%02d:%02dn", $year+1900,$mon+1,$mday,$hour,$min,$sec;
exit(0);
LocalTimeEx01.pl
Results:-
1258346693
Mon Nov 16 11:44:53 2009
53 44 11 16 10 109 1 319 0
2009-11-16 11:44:53
Danairat T.
Date and Time
• Date/Time calculation can be done by using the epoch time
68
use Time::Local;
my $time = timelocal($sec,$min,$hours,$day,$month,$year);
# replace 'timelocal' with 'timegm' if your input date is GMT/UTC
Danairat T.
Date and Time
• Date/Time calculation can be done by using the epoch time
69
#!/usr/bin/perl
use strict;
use warnings;
use Time::Local;
my $myCurrentTimeEpoch = time(); # time counting from 1 Jan 1970
my $myCurrentDatetime = localtime($myCurrentTimeEpoch); # auto convert to scalar
print "myCurrentTimeEpoch is: " . $myCurrentTimeEpoch . "n";
print "myCurrentDatetime is: " . $myCurrentDatetime . "n";
my $myTimeEpoch = timelocal(0,0,0,14,10,109); # 14-Nov-2009 14:30
print "myTimeEpoch is: " . $myTimeEpoch . "n";
my $myDiffTime = $myCurrentTimeEpoch - $myTimeEpoch;
print '$myCurrentTimeEpoch - $myTimeEpoch =' . $myDiffTime . "n";
my $myDiffDay = int($myDiffTime / (3600 * 24));
print "myDiffDay is: " . $myDiffDay . "n";
exit(0);
DateTimeCalcEx01.pl
Results:-
myCurrentTimeEpoch is: 1258356343
myCurrentDatetime is: Mon Nov 16 14:25:43 2009
myTimeEpoch is: 1258131600
$myCurrentTimeEpoch - $myTimeEpoch =224743
myDiffDay is: 2
Danairat T.
Perl Hash
• A compound data type as in key value pairs.
• Hash has no ‘first’ or ‘last’ element like in an array.
• Hashes consist of paired values, Perl provides the =>
operator as an alternative to the comma.
my %myHash = (Mouse => 'Jerry', Cat => 'Tom', Dog => 'Spike');
– Hash variable use % as a represent sign.
– Hash values can be any scalar.
– Hash keys can only be strings. The => operator also allows us to omit the
quotes by treating its left-hand side as a constant string.
70
Danairat T.
Perl Hash- Examples
• Add, modify and display Hash table
• Basic Hash Examples:-
71
#!/usr/bin/perl
use strict;
use warnings;
my %myHash = (Mouse => 'Jerry', Cat => 'Tom');
$myHash{'Dog'} = 'Spike';
@myHash{'Bird', 'Fish'} = ('Tweet', 'Nemo'); # it is @hash{@keys} = @values;
$myHash{'Dog'} = 'Bark';
foreach my $myKey (sort keys %myHash) {
print "$myKey => $myHash{$myKey} n";
}
exit(0);
HashEx01.pl
Results:-
Bird => Tweet
Cat => Tom
Dog => Bark
Fish => Nemo
Mouse => Jerry
Danairat T.
Perl Hash- Examples
• Hash keys and values
72
#!/usr/bin/perl
use strict;
use warnings;
# define a default set of hash keys and values
my %myHash = (Cat => 'Tom', Mouse => 'Jerry');
my @myKeys = keys %myHash;
my @myValues = values %myHash;
print “Keys are: @myKeys”;
print “Values are: @myValues”;
exit(0);
HashKeysValuesEx01.pl
Results:-
Keys are: Mouse Cat
Values are: Jerry Tom
Danairat T.
Perl Hash- Examples
• Removing Hash Keys and Values
73
#!/usr/bin/perl
use strict;
use warnings;
my %myHash = ();
%myHash = (Mouse => 'Jerry', Cat => 'Tom');
print "01 Starting result: " . $myHash{'Cat'} . "n";
undef $myHash{'Cat'};
if (defined $myHash{'Cat'}) {
print "02 Key is still defined: " . $myHash{'Cat'} . "n"; # error complain here
}
if (exists $myHash{'Cat'}) {
print "03 Key is still exist: " . $myHash{'Cat'} . "n"; # no error but no value
}
delete $myHash{'Cat'};
if (exists $myHash{'Cat'}) {
print "04 Delete result:" . $myHash{'Cat'} . "n";
} exit(0);
HashRemoveValueEx01.pl
Results:-
01 Starting result: Tom
Use of uninitialized value in concatenation
(.) or string at test.pl line 14.
03 Key is still exist:
Danairat T.
Perl Hash- Examples
• Combine hashes
• Basic Hash Examples:-
74
#!/usr/bin/perl
use strict;
use warnings;
# define a default set of hash keys and values
my %default_animals = (Cat => 'Tom', Mouse => 'Jerry');
# get another set of keys and values
my %input_animals = (Cat => 'Ginger', Mouse => 'Jerry');
# combining keys and values with overrides
my %animals = (%default_animals, %input_animals);
print "$animals{Cat}n"; # prints 'Ginger'
exit(0);
HashCombineEx01.pl
Results:-
Ginger
Danairat T.
Perl Hash- Examples
• Converting Hash into Array using simply =
75
#!/usr/bin/perl
use strict;
use warnings;
# define a default set of hash keys and values
my %myHash = (Cat => 'Tom', Mouse => 'Jerry');
foreach my $myKey (keys %myHash) {
print "$myKey with value $myHash{$myKey} n";
}
my @myArray = %myHash;
foreach my $myElement (@myArray) {
print "myElement is $myElement n";
}
exit(0);
ArrayFromHashEx01.pl
Results:-
Mouse with value Jerry
Cat with value Tom
myElement is Mouse
myElement is Jerry
myElement is Cat
myElement is Tom
Danairat T.
Perl Hash- Examples
• Converting hash into array when the hash contain undef value
76
#!/usr/bin/perl
use strict;
use warnings;
# define a default set of hash keys and values
my %myHash = (Cat => 'Tom', Mouse => 'Jerry');
foreach my $myKey (keys %myHash) {
print "$myKey with value $myHash{$myKey} n";
}
undef $myHash{'Mouse'};
my @myArray = %myHash;
foreach my $myElement (@myArray) {
print "myElement is $myElement n";
}
exit(0);
ArrayFromHashEx02.pl
Results:-
Mouse with value Jerry
Cat with value Tom
myElement is Mouse
Use of uninitialized value in concatenation
(.) or string at example.pl line 15.
myElement is
myElement is Cat
myElement is Tom
Danairat T.
Perl Hash- Examples
• Named Arguments for Hash passing to Subroutines
• Perl have no built-in %_ variable. You need to use @_
77
#!/usr/bin/perl
use strict;
use warnings;
# define a default set of hash keys and values
my %myHash = (Cat => 'Tom', Mouse => 'Jerry');
sub hashProcess {
my %mySubHash = @_;
foreach my $myKey (keys % mySubHash) {
print "$myKey with value $ mySubHash{$myKey} n";
}
}
exit(0);
HashPassingEx01.pl
Results:-
Mouse with value Jerry
Cat with value Tom
Danairat T.
Flow Control and Loop
• Block
• If, elsif, else
• Unless
• While
• For
• For each
• Do.. until
78
Danairat T.
Flow Control and Loop
• Program Blocks is construct that allows several statements
within in curly braces. The block also defines a new scope in
which variables can be declared and used
{
STATEMENT;
STATEMENT;
... ;
STATEMENT;
}
79
Danairat T.
Flow Control and Loop
• A bare block Example:-
80
use strict;
use warnings;
my $myString = "Hi";
{
my $myString = "Hello";
print "myString inside the block is $myString n";
}
print "myString outside the block is $myString n";
exit(0);
BlockEx01.pl
Results:-
myString inside the block is Hello
myString outside the block is Hi
Danairat T.
Flow Control and Loop
• The Special block: BEGIN, INIT, END. Perl will perform BEGIN then INIT then
END block.
81
#!/usr/bin/perl
use strict;
use warnings;
END {
print "Ending... n";
}
print "No Block Code Here... n";
INIT {
print "Initializing...n";
}
BEGIN {
print "Beginning.. n";
}
exit(0);
SpecialBlockEx01.pl
Results:-
Beginning..
Initializing...
No Block Code Here...
Ending...
Danairat T.
Flow Control and Loop
• 'if‘ : The condition logic, basic form:-
if (EXPRESSION) BLOCK
• Invert the syntax of an if statement put the BLOCK first.
BLOCK if EXPRESSION;
STATEMENT if EXPRESSION;
• In this case we can both omit the parentheses of the condition and also
replace the block with a bare statement
82
Danairat T.
Flow Control and Loop
If, then, and else conditions are implemented with the else keyword:
if (EXPRESSION) BLOCK else BLOCK
83
if ($greet1 eq “Hello”) {
if ($greet2 eq “HI”) {
print "true n";
} else {
print "false n";
}
} else {
print “No Greetingn";
}
1st if
1st else
2nd if
2nd else
Danairat T.
Flow Control and Loop
• elsif for multiple conditions chains.
if (EXPRESSION) BLOCK elsif (EXPRESSION) BLOCK elsif...
if (EXPRESSION) BLOCK elsif (EXPRESSION) BLOCK else BLOCK
84
The equivalent code using elsif
is simpler:
if ($a eq $b) {
print "Equal";
} elsif ($a gt $b) {
print "Greater";
} else {
print "Less";
}
For example, to compare strings
using just if and else we might
write:
if ($a eq $b) {
print "Equal";
} else {
if ($a gt $b) {
print "Greater";
} else {
print "Less";
}
}
Danairat T.
Flow Control and Loop
• unless (“if not”): The unless is very useful to check the
conditions and return (or exit program) if the conditions did
not match with expectation.
Below is the same result but “unless” make the code simpler.
85
if (not open FILE, $filename) {
return "Failed to open $filename";
}
return "Failed to open $filename"
unless (open FILE, $filename);
Danairat T.
Flow Control and Loop
• The Ternary Operator works as an expression and returns a value that
can be assigned in other expressions.
expression1 ? expression2 : expression3
86
#!/usr/bin/perl
use strict;
use warnings;
my $check = “exist”;
my $customerStatus = (if $check eq "exist") ? "Existing" : "New";
print “$customerStatus n";
exit(0);
TernaryEx01.pl
Results:-
Existing
Danairat T.
Flow Control and Loop
Switches: the block contains a multiple-branch condition.
SWITCH: label prefixes the block to indicate that
87
#!/usr/bin/perl
use strict;
use warnings;
print<<EOT;
select on of:-
1. Menu1
2. Menu2
3. Menu3
EOT
print "Please enter choice 1, 2 or 3 :";
my $input = <STDIN>;
chomp($input);
switch: {
$input eq '1' and do { printLabel($input); last; };
$input eq '2' and do { printLabel($input); last; };
$input eq '3' and do { printLabel($input); last; };
}
sub printLabel {
my ($label, @others) = @_;
print "label is: " . $label . "n";
}
exit(0);
SwitchEx01.pl
Results:-
select on of:-
1. Menu1
2. Menu2
3. Menu3
Please enter choice 1, 2 or 3 :3
label is: 3
Danairat T.
Flow Control and Loop
Loops
The block of code that is executed repeatedly, according to
the criteria of the loop's controlling conditions.
Both kinds of loop can be controlled using statements using next, last.
88
- Iterating loops, provided by for and foreach
- Conditional loops, provided by while and until.
Danairat T.
Flow Control and Loop
For loop and Foreach loop
89
foreach (@array) {
print "$_ n";
}
foreach my $element (@array) {
print $element,"n";
}
for ($n = 0; $n < $#array; $n ++) {
print $array [$n], "n";
}
or
Danairat T.
Flow Control and Loop
while, until, and do loop
The conditional Loops to execute the loop for so long as the
condition holds.
90
#!/usr/bin/perl
use warnings;
use strict;
my $n = 0;
while ($n++ < 10) {
print $n . "n";
}
WhileEx01.pl
Results:-
1
2
3
4
5
6
7
8
9
10
Danairat T.
Flow Control and Loop
do...while and do...until
The loop can ensure that the body is executed at least once.
91
#!/usr/bin/perl
use warnings;
use strict;
my $input;
do {
$input = <STDIN>;
print "You typed: $input n";
} while ($input !~ /^quit/);
exit(0);
#!/usr/bin/perl
use warnings;
use strict;
my $input;
do {
$input = <STDIN>;
print "You typed: $input n";
} until ($input =~ /^quit/);
exit(0);
Danairat T.
Flow Control and Loop
Controlling Loop Execution
next, which go to the next iteration (testing the loop condition),
last, which immediately exits the loop
redo, which restarts the current iteration (without retesting the loop condition).
92
#!/usr/bin/perl
use warnings;
use strict;
# define a selection of strings one of which is 'start'
my @lines = ("this", "that", "the other", "start", "the data", "we want");
# discard lines until we see the 'start' marker
while (my $line = shift @lines) {
last if $line eq 'start';
}
# print out the remaining elements using interpolation ($")
print "@lines";
exit (0);
WhileWithShiftEx01.pl
Results:-
the data we want
Danairat T.
Flow Control and Loop
map
map EXPRESSION, LIST
map BLOCK LIST
• Map is to convert the elements of a list one by one, and produce a new list
as a result.
• The expression or block performs the conversion, so map is conceptually
related to a foreach loop. functions perform aliasing $_
93
Danairat T.
Flow Control and Loop
map
94
#!/usr/bin/perl
use warnings;
use strict;
my @myNames = ('jacob', 'alexander', 'ethan', 'andrew');
my @ucNames = map(ucfirst($_), @myNames);
print "@ucNames" . "n";
exit(0);
MapEx01.pl
Results:-
Jacob Alexander Ethan Andrew
Danairat T.
Flow Control and Loop
grep
grep EXPRESSION, LIST
grep BLOCK LIST
• grep is to return a list containing a subset of the original list.
• The expression or block is evaluated to a True or False value to see if the
element is eligible for inclusion, so grep is conceptually related to a while
loop. functions perform aliasing $_
95
Danairat T.
Flow Control and Loop
grep
96
#!/usr/bin/perl
use warnings;
use strict;
my @myNames = ('Jacob', 'Michael', 'Joshua', 'Matthew', 'Alexander', 'Andrew');
my @grepNames = grep(/^A/, @myNames);
print "@grepNames" . "n";
exit(0);
GrepEx01.pl
Results:-
Alexander Andrew
Danairat T.
Line ID: Danairat
FB: Danairat Thanabodithammachari
+668-1559-1446
Thank you

More Related Content

What's hot (20)

Introduction to Perl - Day 1
Introduction to Perl - Day 1Introduction to Perl - Day 1
Introduction to Perl - Day 1
 
Java I/O
Java I/OJava I/O
Java I/O
 
Presentation on-exception-handling
Presentation on-exception-handlingPresentation on-exception-handling
Presentation on-exception-handling
 
Genesis and Overview of Java
Genesis and Overview of Java Genesis and Overview of Java
Genesis and Overview of Java
 
Java 8 Lambda Expressions
Java 8 Lambda ExpressionsJava 8 Lambda Expressions
Java 8 Lambda Expressions
 
Java I/o streams
Java I/o streamsJava I/o streams
Java I/o streams
 
Introduction to Python
Introduction to Python Introduction to Python
Introduction to Python
 
Advance Java Topics (J2EE)
Advance Java Topics (J2EE)Advance Java Topics (J2EE)
Advance Java Topics (J2EE)
 
Java Exception handling
Java Exception handlingJava Exception handling
Java Exception handling
 
Java 8 Lambda and Streams
Java 8 Lambda and StreamsJava 8 Lambda and Streams
Java 8 Lambda and Streams
 
Oop concepts in python
Oop concepts in pythonOop concepts in python
Oop concepts in python
 
JDBC
JDBCJDBC
JDBC
 
jQuery for beginners
jQuery for beginnersjQuery for beginners
jQuery for beginners
 
django
djangodjango
django
 
Perl Scripting
Perl ScriptingPerl Scripting
Perl Scripting
 
Exception Handling in JAVA
Exception Handling in JAVAException Handling in JAVA
Exception Handling in JAVA
 
Java Programming | Java Tutorial For Beginners | Java Training | Edureka
Java Programming | Java Tutorial For Beginners | Java Training | EdurekaJava Programming | Java Tutorial For Beginners | Java Training | Edureka
Java Programming | Java Tutorial For Beginners | Java Training | Edureka
 
Reading and Writing Files
Reading and Writing FilesReading and Writing Files
Reading and Writing Files
 
MongoDB
MongoDBMongoDB
MongoDB
 
Namespaces
NamespacesNamespaces
Namespaces
 

Viewers also liked

Big data Hadoop Analytic and Data warehouse comparison guide
Big data Hadoop Analytic and Data warehouse comparison guideBig data Hadoop Analytic and Data warehouse comparison guide
Big data Hadoop Analytic and Data warehouse comparison guideDanairat Thanabodithammachari
 
Digital Transformation, Enterprise Architecture, Big Data by Danairat
Digital Transformation, Enterprise Architecture, Big Data by DanairatDigital Transformation, Enterprise Architecture, Big Data by Danairat
Digital Transformation, Enterprise Architecture, Big Data by DanairatDanairat Thanabodithammachari
 
The Business value of agile development
The Business value of agile developmentThe Business value of agile development
The Business value of agile developmentPhavadol Srisarnsakul
 
JEE Programming - 08 Enterprise Application Deployment
JEE Programming - 08 Enterprise Application DeploymentJEE Programming - 08 Enterprise Application Deployment
JEE Programming - 08 Enterprise Application DeploymentDanairat Thanabodithammachari
 
A Guide to IT Consulting- Business.com
A Guide to IT Consulting- Business.comA Guide to IT Consulting- Business.com
A Guide to IT Consulting- Business.comBusiness.com
 
Glassfish JEE Server Administration - The Enterprise Server
Glassfish JEE Server Administration - The Enterprise ServerGlassfish JEE Server Administration - The Enterprise Server
Glassfish JEE Server Administration - The Enterprise ServerDanairat Thanabodithammachari
 
Glassfish JEE Server Administration - JEE Introduction
Glassfish JEE Server Administration - JEE IntroductionGlassfish JEE Server Administration - JEE Introduction
Glassfish JEE Server Administration - JEE IntroductionDanairat Thanabodithammachari
 
Perl for System Automation - 01 Advanced File Processing
Perl for System Automation - 01 Advanced File ProcessingPerl for System Automation - 01 Advanced File Processing
Perl for System Automation - 01 Advanced File ProcessingDanairat Thanabodithammachari
 
IBM Cognos Analytics: Empowering business by infusing intelligence across the...
IBM Cognos Analytics: Empowering business by infusing intelligence across the...IBM Cognos Analytics: Empowering business by infusing intelligence across the...
IBM Cognos Analytics: Empowering business by infusing intelligence across the...IBM Analytics
 

Viewers also liked (18)

Perl Programming - 04 Programming Database
Perl Programming - 04 Programming DatabasePerl Programming - 04 Programming Database
Perl Programming - 04 Programming Database
 
Perl Programming - 03 Programming File
Perl Programming - 03 Programming FilePerl Programming - 03 Programming File
Perl Programming - 03 Programming File
 
JEE Programming - 03 Model View Controller
JEE Programming - 03 Model View ControllerJEE Programming - 03 Model View Controller
JEE Programming - 03 Model View Controller
 
Setting up Hadoop YARN Clustering
Setting up Hadoop YARN ClusteringSetting up Hadoop YARN Clustering
Setting up Hadoop YARN Clustering
 
Big data Hadoop Analytic and Data warehouse comparison guide
Big data Hadoop Analytic and Data warehouse comparison guideBig data Hadoop Analytic and Data warehouse comparison guide
Big data Hadoop Analytic and Data warehouse comparison guide
 
Digital Transformation, Enterprise Architecture, Big Data by Danairat
Digital Transformation, Enterprise Architecture, Big Data by DanairatDigital Transformation, Enterprise Architecture, Big Data by Danairat
Digital Transformation, Enterprise Architecture, Big Data by Danairat
 
The Business value of agile development
The Business value of agile developmentThe Business value of agile development
The Business value of agile development
 
JEE Programming - 08 Enterprise Application Deployment
JEE Programming - 08 Enterprise Application DeploymentJEE Programming - 08 Enterprise Application Deployment
JEE Programming - 08 Enterprise Application Deployment
 
A Guide to IT Consulting- Business.com
A Guide to IT Consulting- Business.comA Guide to IT Consulting- Business.com
A Guide to IT Consulting- Business.com
 
Glassfish JEE Server Administration - The Enterprise Server
Glassfish JEE Server Administration - The Enterprise ServerGlassfish JEE Server Administration - The Enterprise Server
Glassfish JEE Server Administration - The Enterprise Server
 
JEE Programming - 05 JSP
JEE Programming - 05 JSPJEE Programming - 05 JSP
JEE Programming - 05 JSP
 
Glassfish JEE Server Administration - JEE Introduction
Glassfish JEE Server Administration - JEE IntroductionGlassfish JEE Server Administration - JEE Introduction
Glassfish JEE Server Administration - JEE Introduction
 
JEE Programming - 06 Web Application Deployment
JEE Programming - 06 Web Application DeploymentJEE Programming - 06 Web Application Deployment
JEE Programming - 06 Web Application Deployment
 
The Face of the New Enterprise
The Face of the New EnterpriseThe Face of the New Enterprise
The Face of the New Enterprise
 
Perl for System Automation - 01 Advanced File Processing
Perl for System Automation - 01 Advanced File ProcessingPerl for System Automation - 01 Advanced File Processing
Perl for System Automation - 01 Advanced File Processing
 
JEE Programming - 02 The Containers
JEE Programming - 02 The ContainersJEE Programming - 02 The Containers
JEE Programming - 02 The Containers
 
JEE Programming - 01 Introduction
JEE Programming - 01 IntroductionJEE Programming - 01 Introduction
JEE Programming - 01 Introduction
 
IBM Cognos Analytics: Empowering business by infusing intelligence across the...
IBM Cognos Analytics: Empowering business by infusing intelligence across the...IBM Cognos Analytics: Empowering business by infusing intelligence across the...
IBM Cognos Analytics: Empowering business by infusing intelligence across the...
 

Similar to Perl Programming - 01 Basic Perl

Bioinformatica 29-09-2011-p1-introduction
Bioinformatica 29-09-2011-p1-introductionBioinformatica 29-09-2011-p1-introduction
Bioinformatica 29-09-2011-p1-introductionProf. Wim Van Criekinge
 
Bioinformatics p1-perl-introduction v2013
Bioinformatics p1-perl-introduction v2013Bioinformatics p1-perl-introduction v2013
Bioinformatics p1-perl-introduction v2013Prof. Wim Van Criekinge
 
Lex tool manual
Lex tool manualLex tool manual
Lex tool manualSami Said
 
typemap in Perl/XS
typemap in Perl/XS  typemap in Perl/XS
typemap in Perl/XS charsbar
 
Part 5 of "Introduction to Linux for Bioinformatics": Working the command lin...
Part 5 of "Introduction to Linux for Bioinformatics": Working the command lin...Part 5 of "Introduction to Linux for Bioinformatics": Working the command lin...
Part 5 of "Introduction to Linux for Bioinformatics": Working the command lin...Joachim Jacob
 
Perl - laziness, impatience, hubris, and one liners
Perl - laziness, impatience, hubris, and one linersPerl - laziness, impatience, hubris, and one liners
Perl - laziness, impatience, hubris, and one linersKirk Kimmel
 
Linuxtraining 130710022121-phpapp01
Linuxtraining 130710022121-phpapp01Linuxtraining 130710022121-phpapp01
Linuxtraining 130710022121-phpapp01Chander Pandey
 
Writing Character driver (loadable module) in linux
Writing Character driver (loadable module) in linuxWriting Character driver (loadable module) in linux
Writing Character driver (loadable module) in linuxRajKumar Rampelli
 
Introduction to-linux
Introduction to-linuxIntroduction to-linux
Introduction to-linuxrowiebornia
 
Introduction-to-Linux.pptx
Introduction-to-Linux.pptxIntroduction-to-Linux.pptx
Introduction-to-Linux.pptxDavidMaina47
 

Similar to Perl Programming - 01 Basic Perl (20)

Bioinformatica 29-09-2011-p1-introduction
Bioinformatica 29-09-2011-p1-introductionBioinformatica 29-09-2011-p1-introduction
Bioinformatica 29-09-2011-p1-introduction
 
Bioinformatics v2014 wim_vancriekinge
Bioinformatics v2014 wim_vancriekingeBioinformatics v2014 wim_vancriekinge
Bioinformatics v2014 wim_vancriekinge
 
Bioinformatics p1-perl-introduction v2013
Bioinformatics p1-perl-introduction v2013Bioinformatics p1-perl-introduction v2013
Bioinformatics p1-perl-introduction v2013
 
Lex tool manual
Lex tool manualLex tool manual
Lex tool manual
 
lec1.docx
lec1.docxlec1.docx
lec1.docx
 
Prog i
Prog iProg i
Prog i
 
typemap in Perl/XS
typemap in Perl/XS  typemap in Perl/XS
typemap in Perl/XS
 
System Programming and Administration
System Programming and AdministrationSystem Programming and Administration
System Programming and Administration
 
Part 5 of "Introduction to Linux for Bioinformatics": Working the command lin...
Part 5 of "Introduction to Linux for Bioinformatics": Working the command lin...Part 5 of "Introduction to Linux for Bioinformatics": Working the command lin...
Part 5 of "Introduction to Linux for Bioinformatics": Working the command lin...
 
Perl - laziness, impatience, hubris, and one liners
Perl - laziness, impatience, hubris, and one linersPerl - laziness, impatience, hubris, and one liners
Perl - laziness, impatience, hubris, and one liners
 
Open mp intro_01
Open mp intro_01Open mp intro_01
Open mp intro_01
 
Nithi
NithiNithi
Nithi
 
Linux
LinuxLinux
Linux
 
Linux And perl
Linux And perlLinux And perl
Linux And perl
 
Linuxtraining 130710022121-phpapp01
Linuxtraining 130710022121-phpapp01Linuxtraining 130710022121-phpapp01
Linuxtraining 130710022121-phpapp01
 
Writing Character driver (loadable module) in linux
Writing Character driver (loadable module) in linuxWriting Character driver (loadable module) in linux
Writing Character driver (loadable module) in linux
 
Linux
LinuxLinux
Linux
 
Introduction-to-Linux.pptx
Introduction-to-Linux.pptxIntroduction-to-Linux.pptx
Introduction-to-Linux.pptx
 
Introduction to-linux
Introduction to-linuxIntroduction to-linux
Introduction to-linux
 
Introduction-to-Linux.pptx
Introduction-to-Linux.pptxIntroduction-to-Linux.pptx
Introduction-to-Linux.pptx
 

More from Danairat Thanabodithammachari

Thailand State Enterprise - Business Architecture and SE-AM
Thailand State Enterprise - Business Architecture and SE-AMThailand State Enterprise - Business Architecture and SE-AM
Thailand State Enterprise - Business Architecture and SE-AMDanairat Thanabodithammachari
 
Agile Organization and Enterprise Architecture v1129 Danairat
Agile Organization and Enterprise Architecture v1129 DanairatAgile Organization and Enterprise Architecture v1129 Danairat
Agile Organization and Enterprise Architecture v1129 DanairatDanairat Thanabodithammachari
 
Enterprise Architecture and Agile Organization Management v1076 Danairat
Enterprise Architecture and Agile Organization Management v1076 DanairatEnterprise Architecture and Agile Organization Management v1076 Danairat
Enterprise Architecture and Agile Organization Management v1076 DanairatDanairat Thanabodithammachari
 
Big data hadooop analytic and data warehouse comparison guide
Big data hadooop analytic and data warehouse comparison guideBig data hadooop analytic and data warehouse comparison guide
Big data hadooop analytic and data warehouse comparison guideDanairat Thanabodithammachari
 
Glassfish JEE Server Administration - Module 4 Load Balancer
Glassfish JEE Server Administration - Module 4 Load BalancerGlassfish JEE Server Administration - Module 4 Load Balancer
Glassfish JEE Server Administration - Module 4 Load BalancerDanairat Thanabodithammachari
 

More from Danairat Thanabodithammachari (16)

Thailand State Enterprise - Business Architecture and SE-AM
Thailand State Enterprise - Business Architecture and SE-AMThailand State Enterprise - Business Architecture and SE-AM
Thailand State Enterprise - Business Architecture and SE-AM
 
Agile Management
Agile ManagementAgile Management
Agile Management
 
Agile Organization and Enterprise Architecture v1129 Danairat
Agile Organization and Enterprise Architecture v1129 DanairatAgile Organization and Enterprise Architecture v1129 Danairat
Agile Organization and Enterprise Architecture v1129 Danairat
 
Blockchain for Management
Blockchain for ManagementBlockchain for Management
Blockchain for Management
 
Enterprise Architecture and Agile Organization Management v1076 Danairat
Enterprise Architecture and Agile Organization Management v1076 DanairatEnterprise Architecture and Agile Organization Management v1076 Danairat
Enterprise Architecture and Agile Organization Management v1076 Danairat
 
Agile Enterprise Architecture - Danairat
Agile Enterprise Architecture - DanairatAgile Enterprise Architecture - Danairat
Agile Enterprise Architecture - Danairat
 
Big data hadooop analytic and data warehouse comparison guide
Big data hadooop analytic and data warehouse comparison guideBig data hadooop analytic and data warehouse comparison guide
Big data hadooop analytic and data warehouse comparison guide
 
Perl Programming - 02 Regular Expression
Perl Programming - 02 Regular ExpressionPerl Programming - 02 Regular Expression
Perl Programming - 02 Regular Expression
 
JEE Programming - 04 Java Servlets
JEE Programming - 04 Java ServletsJEE Programming - 04 Java Servlets
JEE Programming - 04 Java Servlets
 
JEE Programming - 07 EJB Programming
JEE Programming - 07 EJB ProgrammingJEE Programming - 07 EJB Programming
JEE Programming - 07 EJB Programming
 
Glassfish JEE Server Administration - Clustering
Glassfish JEE Server Administration - ClusteringGlassfish JEE Server Administration - Clustering
Glassfish JEE Server Administration - Clustering
 
Glassfish JEE Server Administration - Module 4 Load Balancer
Glassfish JEE Server Administration - Module 4 Load BalancerGlassfish JEE Server Administration - Module 4 Load Balancer
Glassfish JEE Server Administration - Module 4 Load Balancer
 
Java Programming - 07 java networking
Java Programming - 07 java networkingJava Programming - 07 java networking
Java Programming - 07 java networking
 
Java Programming - 08 java threading
Java Programming - 08 java threadingJava Programming - 08 java threading
Java Programming - 08 java threading
 
Java Programming - 06 java file io
Java Programming - 06 java file ioJava Programming - 06 java file io
Java Programming - 06 java file io
 
Java Programming - 05 access control in java
Java Programming - 05 access control in javaJava Programming - 05 access control in java
Java Programming - 05 access control in java
 

Recently uploaded

%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyviewmasabamasaba
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...chiefasafspells
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...masabamasaba
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfonteinmasabamasaba
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...masabamasaba
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...SelfMade bd
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in sowetomasabamasaba
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park masabamasaba
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...Jittipong Loespradit
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfkalichargn70th171
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024VictoriaMetrics
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...masabamasaba
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 

Recently uploaded (20)

%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
Abortion Pills In Pretoria ](+27832195400*)[ 🏥 Women's Abortion Clinic In Pre...
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?WSO2CON 2024 - Does Open Source Still Matter?
WSO2CON 2024 - Does Open Source Still Matter?
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
MarTech Trend 2024 Book : Marketing Technology Trends (2024 Edition) How Data...
 
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdfPayment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
Payment Gateway Testing Simplified_ A Step-by-Step Guide for Beginners.pdf
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 

Perl Programming - 01 Basic Perl

  • 1. Perl Programming 1 Danairat T. Line ID: Danairat FB: Danairat Thanabodithammachari +668-1559-1446
  • 2. Danairat T. Contents Module-1: Introduction to Perl Programming • Basic Variables; string, number, array, hash • Basic Program Flows; if, unless • Basic Program Loops; while, for, for each, do, until 2
  • 3. Danairat T. Contents Module-2: Regular Expression • Introduction to Regular Expression • Matching pattern • Special characters handling • Substitute • Global substitutions 3
  • 4. Danairat T. Contents Module-3: File Handling • Open file for Read or Write • Close file handle • File handle Manipulation • Using regular expression in file handling 4
  • 5. Danairat T. Contents Module-4: Connecting to Database • Understand Perl built-in associate array file • Using module Perl DBI • Connection to MySQL or Oracle database • Insert/Update/Delete/Select by Perl 5
  • 6. Perl Programming 01 - Introduction to Perl Programming 6 Danairat T. Line ID: Danairat FB: Danairat Thanabodithammachari +668-1559-1446
  • 7. Danairat T. What is Perl? (Practical Extraction and Report Language ) • Perl, release in 1987, is a high-level programming language written by Larry Wall. Perl's process, file, and text manipulation facilities make it particularly well-suited for tasks system utilities, system management tasks, database access, networking. These strengths make it especially popular with system administrators. 7
  • 8. Danairat T. Which version of Perl should I use? • No one is actively supporting Perl 4. Five years ago it was a dead camel carcass • There is no Perl 6 release scheduled. • The immediate releases are Perl 5.8 (i.e. Perl5.8.x ) 8
  • 9. Danairat T. OS Platforms Support • UNIX: More or less every UNIX or UNIX-like operating system ever created, notably Linux , Solaris, AIX, IRIX, HP/UX, BSD, and Tru64 • MS Windows: DOS, Windows 3.1, 95, 98, NT and 2000 • Other Desktop OSs: Apple Macintosh (68k and PPC, both pre and post MacOS X), Acorn Risc OS, Amiga, BeOS, OS/2, and many others • Mainframes: AS/400, OS390, VMS and OpenVMS, Stratus (VOS), and Tandem • PDAs: EPOC (Psion/Symbian), but not PalmOS or Windows CE at time of writing, although porting efforts are being made for both platforms 9
  • 10. Danairat T. Identify the Perl version • perl –v • perl -V 10
  • 11. Danairat T. www.CPAN.org • CPAN stands for Comprehensive Perl Archive Network, containing libraries, documentation, and many Perl third-party modules and extensions 11
  • 12. Danairat T. Install Perl • On Unix System – pkgadd -d /cdrom/sol_10_1009_x86/Solaris_10/Product SUNWperl584core – pkgadd –d /cdrom/sol_10_1009_x86/Solaris_10/Product SUNWperl584usr – pkgadd –d /cdrom/sol_10_1009_x86/Solaris_10/Product SUNWperl584man • On Windows System – run ActivePerl-5.8.9.826-MSWin32-x86-290470.msi Available for download at www.activestate.com 12
  • 13. Danairat T. Perl file structure and location • Perl executable: /usr/perl5/bin/perl or /usr/bin/perl • Perl Pain Old Documentation: /usr/perl5/pod • Perl Manual: /usr/perl5/man 13
  • 14. Danairat T. Perl Libraries (Perl Modules) • The Perl Libraries directories – /usr/perl5/5.8.4/lib/i86pc-solaris-64int – /usr/perl5/5.8.4/lib – /usr/perl5/site_perl/5.8.4/i86pc-solaris-64int – /usr/perl5/site_perl/5.8.4 – /usr/perl5/site_perl – /usr/perl5/vendor_perl/5.8.4/i86pc-solaris-64int – /usr/perl5/vendor_perl/5.8.4 – /usr/perl5/vendor_perl 14
  • 15. Danairat T. Perl Library (The modules for Unix) http://www.cpan.org/modules/01modules.index.html 15
  • 16. Danairat T. Perl Library (PPM modules for windows) http://ppm.activestate.com/PPMPackages/zips/8xx-builds-only/Windows/ 16
  • 17. Danairat T. Install Perl Modules on Unix gzip -dc yourmodule.tar.gz | tar -xof - cd /your/new/lib/to/install/ perl Makefile.PL make make test make install Or, if you have internet access perl -MCPAN -e shell cpan> i /Time/ cpan> install Time::CTime 17
  • 18. Danairat T. Install Perl Modules on Unix bash-3.00# cd /tmp/Class-Simple-0.19 bash-3.00# perl Makefile.PL Checking if your kit is complete... Looks good Writing Makefile for Class::Simple bash-3.00# /usr/ccs/bin/make cp lib/Class/Simple.pm blib/lib/Class/Simple.pm Manifying blib/man3/Class::Simple.3 bash-3.00# /usr/ccs/bin/make test PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t t/anon.............ok t/attributes.......ok t/Class-Simple.....ok t/inherit..........ok t/isa..............ok t/nonew............ok t/override.........ok All tests successful. Files=13, Tests=95, 3 wallclock secs ( 0.99 cusr + 0.52 csys = 1.51 CPU) bash-3.00# /usr/ccs/bin/make install Installing /usr/perl5/site_perl/5.8.4/Class/Simple.pm Installing /usr/perl5/5.8.4/man/man3/Class::Simple.3 Writing /usr/perl5/site_perl/5.8.4/i86pc-solaris-64int/auto/Class/Simple/.packli st Appending installation info to /usr/perl5/5.8.4/lib/i86pc-solaris-64int/perlloca l.pod bash-3.00# Example:- 18
  • 19. Danairat T. Install Perl Module on Windows 1. Unzip the lib file 2. Cd to the downloaded lib 3. ppm install yourdownloadedlib.ppd 19
  • 20. Danairat T. Perl Programming Structure #!/usr/bin/perl print "Hello, world!n"; # print to the console • Declarations and Statements • Semicolons • Whitespace • Comments 20
  • 21. Danairat T. Syntax Check and Warning #!/usr/bin/perl use strict; use warnings; print "Hello, world!n"; exit (0); # The 0 is to exit the program with success, 1 is to exit with failure 21 The strict checks for unsafe programming constructs. Strict forces a programmer to declare all variables as package or lexically scoped variables. The programmer also needs to use quotes around all strings, and to call each subroutine explicitly. The warnings print warnings when the Perl compiler detects a possible typographical error and looks for potential problems with mainly look for the most common syntax mistakes and common scripting bugs
  • 22. Danairat T. Basic variable - String • Strings are sequences of characters. • String literals are usually delimited by either single (') or double quotes ("). • Double-quoted: To interpret backslash and variable • Single-quoted: Not to interpret backslash and variable except and ' 22
  • 23. Danairat T. Basic variable - String Double-Quoted String Representations Code Meaning nnnn Newline rrrr Carriage return tttt Horizontal tab Backslash """" Double quote b Backspace u Force next character to uppercase l Force next character to lowercase U Force all following characters to uppercase L Force all following characters to lowercase Q Backslash all following non-alphanumeric characters 23
  • 24. Danairat T. Basic variable - String • Examples #!/usr/bin/perl use strict; use warnings; print 'tThis is a single quoted string.n'; print "tThis is a double quoted string.n"; exit(0); StringEx01.pl 24
  • 25. Danairat T. Basic variable - String • Examples #!/usr/bin/perl use strict; use warnings; print "C:WINNTProfilesn"; print 'C:WINNTProfiles ', "n"; exit(0); StringEx02.pl 25
  • 26. Danairat T. Basic variable - String • Examples #!/usr/bin/perl use strict; use warnings; print " "Hi," said Jack. "Have you read Slashdot today?" "; exit(0); StringEx03.pl 26
  • 27. Danairat T. Basic variable - String • Examples #!/usr/bin/perl use strict; use warnings; print ' "Stop," see this. ', "n"; exit(0); StringEx04.pl 27
  • 28. Danairat T. Quote Constructs Customary Generic Meaning Interpolates '''''''' q//q//q//q// Literal string No """""""" qqqqqqqq//////// Literal string Yes () qw// Word list No // m// Pattern match Yes s/// s/// Pattern substitution Yes y/// tr/// Character translation No 28
  • 29. Danairat T. Basic variable - String • The use of q for single quote and qq for double qoute • Examples:- #!/usr/bin/perl use strict; use warnings; print q/"Hi," said Jack. "Have you read Slashdot today?"/ . qq/n/; print q|"Hi," said Jack. "Have you read Slashdot today?"| . qq|n|; print q#"Hi," said Jack. "Have you read Slashdot today?"# . qq#n#; print q("Hi," said Jack. "Have you read Slashdot today?") . qq(n); print q<"Hi," said Jack. "Have you read Slashdot today?"> . qq<n>; exit(0); StringEx05.pl 29 Results:- "Hi," said Jack. "Have you read Slashdot today?" "Hi," said Jack. "Have you read Slashdot today?" "Hi," said Jack. "Have you read Slashdot today?" "Hi," said Jack. "Have you read Slashdot today?" "Hi," said Jack. "Have you read Slashdot today?"
  • 30. Danairat T. Basic variable - String • The use of qw for array initialization • Examples:- #!/usr/bin/perl use strict; use warnings; my @array1 = ('a', 'lot', 'of', 'quotes', 'is', 'not', 'very', 'legible'); print $array1[1] . "n"; # same result by using the qw and the qw will not interpolate variables my @array2 = qw(a lot of quotes is not very legible); print $array2[1] . "n"; # same result my @array3 = qw( a lot of quotes is not very legible ); print $array3[1] . "n"; exit(0); StringEx06.pl 30 Results:- lot lot lot
  • 31. Danairat T. Basic variable - String • The use of print <<EOF to write an amount of text within your program. Perl will interpret as double quote. This can be used as a format print loop purpose. • Examples:- #!/usr/bin/perl use strict; use warnings; print<<EOT; This is a here-document. It starts on the line after the two arrows, and it ends when the text following the arrows is found at the beginning a line, like this EOT exit(0); StringEx07.pl 31
  • 32. Danairat T. The $ sign for scalar variable • Perl use $ represent scalar variable for both string and number. 32 $theString = “test string”; $theNumber = 25; #!/usr/bin/perl use strict; use warnings; my $theString = "test string"; print $theString . "n"; # The . is an concatenate and n is new line exit(0); ScalarVarEx01.pl Results:- test string
  • 33. Danairat T. Scope of variable my, local • my The variable is not visible outside the block in which it is defined. Recommend to use my variable as it is faster than local. • local Local saves the value of a global variable. Here also the variable is not accessible outside the block but it is visible in the subroutine which is called from the original block. You may need to use local when you write code in Perl 4 33
  • 34. Danairat T. Basic variable - Number • Perl interpret both float and integer as 32 bits according to the C compiler that compiled Perl used. Integer Literals 12 15 -2004 3485 1_000_000 Float Literals 1.25 # about 1 and a quarter 7.25e45 # 7.25 times 10 to the 45th power -6.5e24 # negative 6.5 times 10 to the 24th -12e-24 # negative 12 times 10 to the -24th -1.2E-23 # another way to say that 34
  • 35. Danairat T. Basic variable - Number • To represent the non-decimal, we need to provide prefix for Binary (0b), Octal (0), Hexadecimal (0x) • Examples:- #!/usr/bin/perl use strict; use warnings; print 255, "n"; # decimal number print 0b11111111, "n"; # 0 or 1 print 0377, "n"; # 0 to 7 print 0xFF, "n"; # 0 to F exit(0); NumberEx01.pl 35 Results:- 255 255 255 255
  • 36. Danairat T. Number Conversion Convert BIN to DEC • $number = 0b10110110; Convert OCT to DEC • $dec = 033653337357; • $dec = oct("33653337357"); Convert HEX to DEC • $dec = 0xDEADBEEF; • $dec = hex("DEADBEEF"); Convert DEC to BIN • $bin = sprintf("%b", 3735928559); Convert DEC to OCT • $oct = sprintf("%o", 3735928559); Convert DEC to HEX • $hex = sprintf("%X", 3735928559); # upper case A-F • $hex = sprintf("%x", 3735928559); # lower case a-f 36
  • 37. Danairat T. Operators Precedence Associativity Operator Left The "list" operators (leftward) eg. print(), sort(), Left -> (method call, dereference) Nonassociative ++++++++ -------- (autoincrement, autodecrement) Right ******** (exponentiation) Left =~=~=~=~ !~!~!~!~ (matches, doesn't match) Left **** //// %%%% xxxx (multiply, divide, modulus, string replicate) Left ++++ ---- .... (add, subtract, string concatenate) Left << >> Nonassociative Named unary operators (like chomp) Nonassociative < > <= >= lt gt le ge Nonassociative == != <=> eq ne cmp Left & (bit-and) Left | ^ (bit-or, bit-xor) Nonassociative .. ... (noninclusive and inclusive range) Right ?: (if-then-else) Right = += -= *=, etc. (assignment and binary-assignment) Left , => (comma and comma-arrow) Nonassociative List operators (rightward) Right not (logical not) Left and (logical and) Left or xor (logical or, logical xor) 37
  • 38. Danairat T. Operators • Examples:- #!/usr/bin/perl use strict; use warnings; print 2 + 118 . "n"; print 3 + 2 * 15 . "n"; print(3 + 2) * 15; # list operator impact to print() print "n"; print((3 + 2) * 15); print "n"; print 2**4 . ", " . -2**4 . "n"; print (2**4 . ", " . (-2)**4 . "n"); exit(0); Results:- 120 33 5 75 16, -16 16,16 OperatorEx01.pl 38
  • 39. Danairat T. Repetition Operators • The string repetition operator (x) does to a left operand string. The number 5 is converted to the string "5". This new string is then copied four times as 5555 • Examples:- #!/usr/bin/perl use strict; use warnings; print ((3+2) x 4); exit(0); RepetitionEx01.pl 39 Results:- 5555
  • 40. Danairat T. Comparison Operators • Perl always requires you to specify the proper type of comparison, whether it be numeric or string. Remarks: 7 is less than 30, but the string "30" comes before the string "7" (because the ASCII value for 3 is less than the value for 7) Comparison Numeric String Equal == eq Not equal != ne Less than < lt Greater than > gt Less than or equal to <= le Greater than or equal to >= ge 40
  • 41. Danairat T. Comparison Operators • Examples:- #!/usr/bin/perl use strict; use warnings; print 15==15; # true print "n"; print 15==20; # false print "n"; print 100 < 5; # false print "n"; print 100 lt 5; # true exit (0); CompareEx01.pl 41 Results:- 1 1
  • 42. Danairat T. String Operator • Built-in Auto Converting Strings into Numbers • Examples:- #!/usr/bin/perl use strict; use warnings; # define a numeric string my $scalar = '123.4e5'; # evaluate it in original string context print $scalar; # produces '123.4e5' print "n"; # evaluate it in numeric context print $scalar + 1; # produces '12340001' print "n"; exit(0); AutoConvertEx01.pl 42 Results:- 123.4e5 12340001
  • 43. Danairat T. String Operator • Converting Strings into Array using Split unary operator • Examples:- #!/usr/bin/perl use strict; use warnings; $csv = "one , two , three , four , five , six"; @list1 = split(', ' , $csv); # function style print @list1; print "n"; @list2 = split /, /, $csv; # regular expression style print @list2; print "n"; @list3 = split /s*, s*/, $csv; # regular expression style with trim the delimiter print @list3; print "n"; exit(0); Results:- one two three four five six one two three four five six onetwothreefourfivesix SplitStringEx01.pl 43
  • 44. Danairat T. Perl Array • A dynamic storage for a list which can be grown, shrunk, alter. The array variable starts prefix with an at-sign @ 44 @numberArray = (1, 2, 3, 4, 5, 6); @stringArray = ('one', 'two', 'three', 'four', 'five'); @myArray = ('one', 'two', 'three', 4, 'five'); @stringArray = qw(one two three four five); @stringArray = qw( one two three four five );
  • 45. Danairat T. Perl Array - Examples • Assign values to array and loop display value from array 45 #!/usr/bin/perl use strict; use warnings; my @array = (); # initialize an array $array[0] = "1st "; $array[4] = "5th "; @array[1..3, 5, -1] = ("2nd ", "3rd ", "4th ", "6th ", "Last"); foreach my $theRest (@array ) { print $theRest; } exit(0); ManipulateArrayEx01.pl Results:- 1st 2nd 3rd 4th 5th Last
  • 46. Danairat T. Perl Array - Examples • Using scalar to get arrays size and last position of an array $# 46 #!/usr/bin/perl use strict; use warnings; my @myArray = ('one', 'two', 'three', 4, 'five'); my $arraySize = scalar(@myArray); print "The Array size is: " . $arraySize . "n"; print "The last element is: " . $myArray[$#myArray] . "n"; exit(0); ArraySizeEx01.pl Results:- The Array size is: 5 The last element is: five
  • 47. Danairat T. Perl Array - Examples • Adding element to array using push 47 #!/usr/bin/perl use strict; use warnings; my @myArray = ('one', 'two', 'three', 4, 'five'); $myArray[scalar(@myArray)] = ‘six’; # adding the new element; push (@myArray, ’seven’); print "The Array size is: " . scalar(@myArray) . "n"; print "The last element is: " . $myArray[$#myArray] . "n"; exit(0); AddingArrayEx01.pl Results:- The Array size is: 7 The last element is: seven
  • 48. Danairat T. Perl Array - Examples • Removing last elements from an Array using pop 48 #!/usr/bin/perl use strict; use warnings; my @array = (1, 2, 3, 4, 5, 6); push (@array, '7'); print "@arrayn"; my $last = pop @array; print "$lastn"; # print 7 print "@arrayn"; exit(0); PopArrayEx01.pl Results:- 1 2 3 4 5 6 7 7 1 2 3 4 5 6
  • 49. Danairat T. Perl Array - Examples • Adding element to array at position zero using unshift • The below is equivalent to: splice @array, 0, 0, @more; 49 #!/usr/bin/perl use strict; use warnings; my @myArray = ('one', 'two', 'three', 4, 'five'); unshift (@myArray, 'first_added', 'second_added'); # adding element at first print "The Array size is: " . scalar(@myArray) . "n"; print "The last element is: " . $myArray[$#myArray] . "n"; print "The array element values are: @myArray n"; exit(0); UnshiftArrayEx01.pl Results:- The Array size is: 7 The last element is: five The array element values are: first_added second_added one two three 4 five
  • 50. Danairat T. Perl Array - Examples • Removing first elements from an Array using shift 50 #!/usr/bin/perl use strict; use warnings; my @array = (1, 2, 3, 4, 5, 6); print "The starting array is @arrayn"; # array is now (1, 2, 3, 4, 5, 6, 7) unshift (@array, -1, 0); print "Array after unshift is @arrayn"; # array is now (-1, 0, 1, 2, 3, 4, 5, 6) my $shiftValue = shift @array; # remove the first element of the array print "shiftValue is: " . $shiftValue . "n"; $shiftValue = shift @array; # remove the first element of the array print "shiftValue is: " . $shiftValue . "n"; print "The rest elements are: @arrayn"; exit(0); ShiftArrayEx01.pl Results:- The starting array is 1 2 3 4 5 6 Array after unshift is -1 0 1 2 3 4 5 6 shiftValue is: -1 shiftValue is: 0 The rest elements are: 1 2 3 4 5 6
  • 51. Danairat T. Perl Array - Examples • Flexible copy an array 51 #!/usr/bin/perl use strict; use warnings; my @myArray = ('one', 'two', 'three', 4, 'five'); my $firstPosition; my @myArray2 = (); my @myArray3 = (); ($firstPosition, @myArray2[0..1], @myArray3) = @myArray; print $firstPosition . "n"; # print the first element foreach my $theRest (@myArray2) { print $theRest . "n"; # print element from myArray2 } exit(0); CopyArrayEx01.pl Results:- one two three
  • 52. Danairat T. Perl Array - Examples • Resizing and Truncating an Array. The below is fastest way to resize an array. 52 #!/usr/bin/perl use strict; use warnings; my @myArray = ("apple ", "banana ", "orange "); print "Array size is: ". scalar(@myArray) . "n"; $#myArray = 99; # increase an array size to 100 without assign value print "Array size is: ". scalar(@myArray) . "n"; $#myArray = 1; # decrease an array size to 2 print "Array size is: ". scalar(@myArray) . "n"; print "Array element values are: @myArray n"; exit(0); ResizeArrayEx01.pl Results:- Array size is: 3 Array size is: 100 Array size is: 2 Array element values are: apple banana
  • 53. Danairat T. Perl Array - Examples • Remove all elements 53 #!/usr/bin/perl use strict; use warnings; my @myArray = ("apple ", "banana ", "orange "); print "Array size is: ". scalar(@myArray) . "n"; @myArray = (); # remove all elements and return memory to OS print "Array size is: ". scalar(@myArray) . "n"; exit(0); RemoveAllElementsArrayEx02.pl Results:- Array size is: 3 Array size is: 0
  • 54. Danairat T. Perl Array - Examples • Sorting Arrays using sort 54 #!/usr/bin/perl use strict; use warnings; my @words = ('here', 'are', 'some', 'words'); my @alphabetical = sort @words; print "The starting array: @words n"; print "The sorted array: @alphabetical n"; exit(0); SortArrayEx02.pl Results:- The starting array: here are some words The sorted array: are here some words
  • 55. Danairat T. Perl Array - Examples • Reversing Arrays using reverse. This is only to reverse an array but not to do reverse-sort array. 55 #!/usr/bin/perl use strict; use warnings; my @words = ('here', 'are', 'some', 'words'); my @alphabetical = reverse @words; print "The starting array: @words n"; print "The reversed array: @alphabetical n"; exit(0); ReverseArrayEx02.pl Results:- The starting array: here are some words The sorted array: words some are here
  • 56. Danairat T. Perl Array - Examples • Reversing Sort Arrays using sort 56 #!/usr/bin/perl use strict; use warnings; my @words = ('here', 'are', 'some', 'words'); my @alphabetical = sort {$b cmp $a} @words; print "The starting array: @words n"; print "The reversed sort array: @alphabetical n"; exit(0); ReverseArrayEx02.pl Results:- The starting array: here are some words The reversed sorted array: words some here are
  • 57. Danairat T. Perl Array - Examples • Numbering sort using {$a <=> $b}. The built-in global variables $a and $b for sorting algorithms 57 #!/usr/bin/perl use strict; use warnings; my @words = ('100', '5', '2000', '9'); my @sortArray = sort {$a <=> $b} @words; print "The starting array: @words n"; print "The sorted array: @sortArray n"; exit(0); NumberSortedArrayEx02.pl Results:- The starting array: 100 5 2000 9 The sorted array: 5 9 100 2000
  • 58. Danairat T. Perl Array - Examples • Alphanumeric (mixed) sort using {int($a) <=> int($b) or $a cmp $b}. The <=> is for number and cmp is for character comparison. 58 #!/usr/bin/perl use strict; use warnings; my @words = ("1000", "zebra", "100", "apple", "5", "2000", "9"); my @sortArray = sort {int($a) <=> int($b) or $a cmp $b} @words; print "The starting array: @words n"; print "The sort array: @sortArray n"; exit(0); AlphaSortedArrayEx02.pl Results:- Argument "zebra" isn't numeric in int at test.pl line 6. Argument "apple" isn't numeric in int at test.pl line 6. The starting array: 1000 zebra 100 apple 5 2000 9 The sort array: apple zebra 5 9 100 1000 2000
  • 59. Danairat T. Perl Array - Examples • Converting array into scalar using join 59 #!/usr/bin/perl use strict; use warnings; my @words = ("1000", "zebra", "100", "apple", "5", "2000", "9"); print "The starting array: @words n"; @words = sort {int($a) <=> int($b) or $a cmp $b} @words; print "The sorted array: @words n"; my $scalarWords = join ("|", @words); print "The result is: $scalarWords n"; exit(0); SalarFromArrayEx02.pl Results:- The starting array: 1000 zebra 100 apple 5 2000 9 Argument "zebra" isn't numeric in int at test.pl line 7. Argument "apple" isn't numeric in int at test.pl line 7. The sorted array: apple zebra 5 9 100 1000 2000 The result is: apple|zebra|5|9|100|1000|2000
  • 60. Danairat T. Perl Array - Examples • Converting scalar to array using split 60 #!/usr/bin/perl use strict; use warnings; my $words = "apple|zebra|5|9|100|1000|2000"; my @wordsArray = split (/|/, $words); print "The result is: @wordsArray n"; exit(0); ArrayFromSplitEx02.pl Results:- The result is: apple zebra 5 9 100 1000 2000
  • 61. Danairat T. Perl Array - Examples • Replace and insert elements in array using splice splice @array, $from, $quantity, @replacement; 61 #!/usr/bin/perl use strict; use warnings; my @array = ('a', 'b', 'c', 'd', 'e', 'f'); # replace third element with three new elements my $removed = splice @array, 2, 1, (1, 2, 3); print "The array values are: @array n"; print "The removed element is: $removed n"; exit(0); ReplaceInsertArrayEx01.pl Results:- The array values are: a b 1 2 3 d e f The removed element is: c
  • 62. Danairat T. Perl Array - Examples • Remove elements in array using splice splice @array, $from, $quantity; 62 #!/usr/bin/perl use strict; use warnings; my @array = ('a', 'b', 'c', 'd', 'e', 'f'); # remove elements 2, 3 and 4 my @removed = splice @array, 2, 3; # start from position#2 for 3 positions print "The rest elements are: @arrayn"; print "The removed elements are: @removedn"; exit(0); RemoveElementsArrayEx01.pl Results:- The rest elements are: a b f The removed elements are: c d e
  • 63. Danairat T. Perl Array - Examples • Remove elements to the end of the array using splice splice @array, $quantity; 63 #!/usr/bin/perl use strict; use warnings; my @array = ('a', 'b', 'c', 'd', 'e', 'f'); # remove last three elements my @last_4_elements = splice @array, -4; # start from last pos of 4 to the end print "@arrayn"; print "@last_4_elementsn"; exit(0); RemoveElementsArrayEx02.pl Results:- a b c d e f
  • 64. Danairat T. Date and Time • The epoch The epoch system, as used most operating systems, represents a datetime as the number of seconds after a specific date and time. For Unix systems, the epoch began on January 1, 1970 at midnight GMT (UTC). time() • Local time The local time is UTC plus the local time zone offset. While UTC is great for internal use, most people want to see datetimes in terms of their location. localtime() 64
  • 65. Danairat T. Date and Time • Example:- 65 #!/usr/bin/perl use strict; use warnings; my $myEpoch = time(); # time in second that counting from 1 Jan 1970 print $myEpoch . "n"; my $myDatetime = localtime($myEpoch); # auto convert to scalar print $myDatetime . "n"; exit(0); DateAndTimeEx01.pl Results:- 1258345951 Mon Nov 16 11:32:31 2009
  • 66. Danairat T. Date and Time • The Local Time The Local Time can be return value in scalar or in array and provide you to get the value in day, month, year, hh, mm, etc. 66 $sec - seconds [0-60, to allow for leap seconds] $min - minutes [0-59], $hour - hours [0-23], $mday - day of the month [1-31] (Note: from '1'), $mon - month [0-11] (Jan. is '0'), $year - number of years since 1900 (1999 is 99; 2000 is 100), $wday - day of the week [0-6] (Sun. is '0'), $yday - day of the year [0-365] (total of 366 possible for leap year) $isdst - daylight savings time [0,1] -- returns boolean '0' or '1' if Daylight Savings active. my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time());
  • 67. Danairat T. Date and Time • Example:- 67 #!/usr/bin/perl use strict; use warnings; my $myEpoch = time(); # time counting from 1 Jan 1970 print $myEpoch . "n"; my $myDatetime = localtime($myEpoch); # auto convert to scalar print $myDatetime . "n"; my @myTimeData = localtime($myEpoch); # same as localtime() but use the fixed value from previous var print join (" ", @myTimeData) . "n"; my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = @myTimeData; printf "%4d-%02d-%02d %02d:%02d:%02dn", $year+1900,$mon+1,$mday,$hour,$min,$sec; exit(0); LocalTimeEx01.pl Results:- 1258346693 Mon Nov 16 11:44:53 2009 53 44 11 16 10 109 1 319 0 2009-11-16 11:44:53
  • 68. Danairat T. Date and Time • Date/Time calculation can be done by using the epoch time 68 use Time::Local; my $time = timelocal($sec,$min,$hours,$day,$month,$year); # replace 'timelocal' with 'timegm' if your input date is GMT/UTC
  • 69. Danairat T. Date and Time • Date/Time calculation can be done by using the epoch time 69 #!/usr/bin/perl use strict; use warnings; use Time::Local; my $myCurrentTimeEpoch = time(); # time counting from 1 Jan 1970 my $myCurrentDatetime = localtime($myCurrentTimeEpoch); # auto convert to scalar print "myCurrentTimeEpoch is: " . $myCurrentTimeEpoch . "n"; print "myCurrentDatetime is: " . $myCurrentDatetime . "n"; my $myTimeEpoch = timelocal(0,0,0,14,10,109); # 14-Nov-2009 14:30 print "myTimeEpoch is: " . $myTimeEpoch . "n"; my $myDiffTime = $myCurrentTimeEpoch - $myTimeEpoch; print '$myCurrentTimeEpoch - $myTimeEpoch =' . $myDiffTime . "n"; my $myDiffDay = int($myDiffTime / (3600 * 24)); print "myDiffDay is: " . $myDiffDay . "n"; exit(0); DateTimeCalcEx01.pl Results:- myCurrentTimeEpoch is: 1258356343 myCurrentDatetime is: Mon Nov 16 14:25:43 2009 myTimeEpoch is: 1258131600 $myCurrentTimeEpoch - $myTimeEpoch =224743 myDiffDay is: 2
  • 70. Danairat T. Perl Hash • A compound data type as in key value pairs. • Hash has no ‘first’ or ‘last’ element like in an array. • Hashes consist of paired values, Perl provides the => operator as an alternative to the comma. my %myHash = (Mouse => 'Jerry', Cat => 'Tom', Dog => 'Spike'); – Hash variable use % as a represent sign. – Hash values can be any scalar. – Hash keys can only be strings. The => operator also allows us to omit the quotes by treating its left-hand side as a constant string. 70
  • 71. Danairat T. Perl Hash- Examples • Add, modify and display Hash table • Basic Hash Examples:- 71 #!/usr/bin/perl use strict; use warnings; my %myHash = (Mouse => 'Jerry', Cat => 'Tom'); $myHash{'Dog'} = 'Spike'; @myHash{'Bird', 'Fish'} = ('Tweet', 'Nemo'); # it is @hash{@keys} = @values; $myHash{'Dog'} = 'Bark'; foreach my $myKey (sort keys %myHash) { print "$myKey => $myHash{$myKey} n"; } exit(0); HashEx01.pl Results:- Bird => Tweet Cat => Tom Dog => Bark Fish => Nemo Mouse => Jerry
  • 72. Danairat T. Perl Hash- Examples • Hash keys and values 72 #!/usr/bin/perl use strict; use warnings; # define a default set of hash keys and values my %myHash = (Cat => 'Tom', Mouse => 'Jerry'); my @myKeys = keys %myHash; my @myValues = values %myHash; print “Keys are: @myKeys”; print “Values are: @myValues”; exit(0); HashKeysValuesEx01.pl Results:- Keys are: Mouse Cat Values are: Jerry Tom
  • 73. Danairat T. Perl Hash- Examples • Removing Hash Keys and Values 73 #!/usr/bin/perl use strict; use warnings; my %myHash = (); %myHash = (Mouse => 'Jerry', Cat => 'Tom'); print "01 Starting result: " . $myHash{'Cat'} . "n"; undef $myHash{'Cat'}; if (defined $myHash{'Cat'}) { print "02 Key is still defined: " . $myHash{'Cat'} . "n"; # error complain here } if (exists $myHash{'Cat'}) { print "03 Key is still exist: " . $myHash{'Cat'} . "n"; # no error but no value } delete $myHash{'Cat'}; if (exists $myHash{'Cat'}) { print "04 Delete result:" . $myHash{'Cat'} . "n"; } exit(0); HashRemoveValueEx01.pl Results:- 01 Starting result: Tom Use of uninitialized value in concatenation (.) or string at test.pl line 14. 03 Key is still exist:
  • 74. Danairat T. Perl Hash- Examples • Combine hashes • Basic Hash Examples:- 74 #!/usr/bin/perl use strict; use warnings; # define a default set of hash keys and values my %default_animals = (Cat => 'Tom', Mouse => 'Jerry'); # get another set of keys and values my %input_animals = (Cat => 'Ginger', Mouse => 'Jerry'); # combining keys and values with overrides my %animals = (%default_animals, %input_animals); print "$animals{Cat}n"; # prints 'Ginger' exit(0); HashCombineEx01.pl Results:- Ginger
  • 75. Danairat T. Perl Hash- Examples • Converting Hash into Array using simply = 75 #!/usr/bin/perl use strict; use warnings; # define a default set of hash keys and values my %myHash = (Cat => 'Tom', Mouse => 'Jerry'); foreach my $myKey (keys %myHash) { print "$myKey with value $myHash{$myKey} n"; } my @myArray = %myHash; foreach my $myElement (@myArray) { print "myElement is $myElement n"; } exit(0); ArrayFromHashEx01.pl Results:- Mouse with value Jerry Cat with value Tom myElement is Mouse myElement is Jerry myElement is Cat myElement is Tom
  • 76. Danairat T. Perl Hash- Examples • Converting hash into array when the hash contain undef value 76 #!/usr/bin/perl use strict; use warnings; # define a default set of hash keys and values my %myHash = (Cat => 'Tom', Mouse => 'Jerry'); foreach my $myKey (keys %myHash) { print "$myKey with value $myHash{$myKey} n"; } undef $myHash{'Mouse'}; my @myArray = %myHash; foreach my $myElement (@myArray) { print "myElement is $myElement n"; } exit(0); ArrayFromHashEx02.pl Results:- Mouse with value Jerry Cat with value Tom myElement is Mouse Use of uninitialized value in concatenation (.) or string at example.pl line 15. myElement is myElement is Cat myElement is Tom
  • 77. Danairat T. Perl Hash- Examples • Named Arguments for Hash passing to Subroutines • Perl have no built-in %_ variable. You need to use @_ 77 #!/usr/bin/perl use strict; use warnings; # define a default set of hash keys and values my %myHash = (Cat => 'Tom', Mouse => 'Jerry'); sub hashProcess { my %mySubHash = @_; foreach my $myKey (keys % mySubHash) { print "$myKey with value $ mySubHash{$myKey} n"; } } exit(0); HashPassingEx01.pl Results:- Mouse with value Jerry Cat with value Tom
  • 78. Danairat T. Flow Control and Loop • Block • If, elsif, else • Unless • While • For • For each • Do.. until 78
  • 79. Danairat T. Flow Control and Loop • Program Blocks is construct that allows several statements within in curly braces. The block also defines a new scope in which variables can be declared and used { STATEMENT; STATEMENT; ... ; STATEMENT; } 79
  • 80. Danairat T. Flow Control and Loop • A bare block Example:- 80 use strict; use warnings; my $myString = "Hi"; { my $myString = "Hello"; print "myString inside the block is $myString n"; } print "myString outside the block is $myString n"; exit(0); BlockEx01.pl Results:- myString inside the block is Hello myString outside the block is Hi
  • 81. Danairat T. Flow Control and Loop • The Special block: BEGIN, INIT, END. Perl will perform BEGIN then INIT then END block. 81 #!/usr/bin/perl use strict; use warnings; END { print "Ending... n"; } print "No Block Code Here... n"; INIT { print "Initializing...n"; } BEGIN { print "Beginning.. n"; } exit(0); SpecialBlockEx01.pl Results:- Beginning.. Initializing... No Block Code Here... Ending...
  • 82. Danairat T. Flow Control and Loop • 'if‘ : The condition logic, basic form:- if (EXPRESSION) BLOCK • Invert the syntax of an if statement put the BLOCK first. BLOCK if EXPRESSION; STATEMENT if EXPRESSION; • In this case we can both omit the parentheses of the condition and also replace the block with a bare statement 82
  • 83. Danairat T. Flow Control and Loop If, then, and else conditions are implemented with the else keyword: if (EXPRESSION) BLOCK else BLOCK 83 if ($greet1 eq “Hello”) { if ($greet2 eq “HI”) { print "true n"; } else { print "false n"; } } else { print “No Greetingn"; } 1st if 1st else 2nd if 2nd else
  • 84. Danairat T. Flow Control and Loop • elsif for multiple conditions chains. if (EXPRESSION) BLOCK elsif (EXPRESSION) BLOCK elsif... if (EXPRESSION) BLOCK elsif (EXPRESSION) BLOCK else BLOCK 84 The equivalent code using elsif is simpler: if ($a eq $b) { print "Equal"; } elsif ($a gt $b) { print "Greater"; } else { print "Less"; } For example, to compare strings using just if and else we might write: if ($a eq $b) { print "Equal"; } else { if ($a gt $b) { print "Greater"; } else { print "Less"; } }
  • 85. Danairat T. Flow Control and Loop • unless (“if not”): The unless is very useful to check the conditions and return (or exit program) if the conditions did not match with expectation. Below is the same result but “unless” make the code simpler. 85 if (not open FILE, $filename) { return "Failed to open $filename"; } return "Failed to open $filename" unless (open FILE, $filename);
  • 86. Danairat T. Flow Control and Loop • The Ternary Operator works as an expression and returns a value that can be assigned in other expressions. expression1 ? expression2 : expression3 86 #!/usr/bin/perl use strict; use warnings; my $check = “exist”; my $customerStatus = (if $check eq "exist") ? "Existing" : "New"; print “$customerStatus n"; exit(0); TernaryEx01.pl Results:- Existing
  • 87. Danairat T. Flow Control and Loop Switches: the block contains a multiple-branch condition. SWITCH: label prefixes the block to indicate that 87 #!/usr/bin/perl use strict; use warnings; print<<EOT; select on of:- 1. Menu1 2. Menu2 3. Menu3 EOT print "Please enter choice 1, 2 or 3 :"; my $input = <STDIN>; chomp($input); switch: { $input eq '1' and do { printLabel($input); last; }; $input eq '2' and do { printLabel($input); last; }; $input eq '3' and do { printLabel($input); last; }; } sub printLabel { my ($label, @others) = @_; print "label is: " . $label . "n"; } exit(0); SwitchEx01.pl Results:- select on of:- 1. Menu1 2. Menu2 3. Menu3 Please enter choice 1, 2 or 3 :3 label is: 3
  • 88. Danairat T. Flow Control and Loop Loops The block of code that is executed repeatedly, according to the criteria of the loop's controlling conditions. Both kinds of loop can be controlled using statements using next, last. 88 - Iterating loops, provided by for and foreach - Conditional loops, provided by while and until.
  • 89. Danairat T. Flow Control and Loop For loop and Foreach loop 89 foreach (@array) { print "$_ n"; } foreach my $element (@array) { print $element,"n"; } for ($n = 0; $n < $#array; $n ++) { print $array [$n], "n"; } or
  • 90. Danairat T. Flow Control and Loop while, until, and do loop The conditional Loops to execute the loop for so long as the condition holds. 90 #!/usr/bin/perl use warnings; use strict; my $n = 0; while ($n++ < 10) { print $n . "n"; } WhileEx01.pl Results:- 1 2 3 4 5 6 7 8 9 10
  • 91. Danairat T. Flow Control and Loop do...while and do...until The loop can ensure that the body is executed at least once. 91 #!/usr/bin/perl use warnings; use strict; my $input; do { $input = <STDIN>; print "You typed: $input n"; } while ($input !~ /^quit/); exit(0); #!/usr/bin/perl use warnings; use strict; my $input; do { $input = <STDIN>; print "You typed: $input n"; } until ($input =~ /^quit/); exit(0);
  • 92. Danairat T. Flow Control and Loop Controlling Loop Execution next, which go to the next iteration (testing the loop condition), last, which immediately exits the loop redo, which restarts the current iteration (without retesting the loop condition). 92 #!/usr/bin/perl use warnings; use strict; # define a selection of strings one of which is 'start' my @lines = ("this", "that", "the other", "start", "the data", "we want"); # discard lines until we see the 'start' marker while (my $line = shift @lines) { last if $line eq 'start'; } # print out the remaining elements using interpolation ($") print "@lines"; exit (0); WhileWithShiftEx01.pl Results:- the data we want
  • 93. Danairat T. Flow Control and Loop map map EXPRESSION, LIST map BLOCK LIST • Map is to convert the elements of a list one by one, and produce a new list as a result. • The expression or block performs the conversion, so map is conceptually related to a foreach loop. functions perform aliasing $_ 93
  • 94. Danairat T. Flow Control and Loop map 94 #!/usr/bin/perl use warnings; use strict; my @myNames = ('jacob', 'alexander', 'ethan', 'andrew'); my @ucNames = map(ucfirst($_), @myNames); print "@ucNames" . "n"; exit(0); MapEx01.pl Results:- Jacob Alexander Ethan Andrew
  • 95. Danairat T. Flow Control and Loop grep grep EXPRESSION, LIST grep BLOCK LIST • grep is to return a list containing a subset of the original list. • The expression or block is evaluated to a True or False value to see if the element is eligible for inclusion, so grep is conceptually related to a while loop. functions perform aliasing $_ 95
  • 96. Danairat T. Flow Control and Loop grep 96 #!/usr/bin/perl use warnings; use strict; my @myNames = ('Jacob', 'Michael', 'Joshua', 'Matthew', 'Alexander', 'Andrew'); my @grepNames = grep(/^A/, @myNames); print "@grepNames" . "n"; exit(0); GrepEx01.pl Results:- Alexander Andrew
  • 97. Danairat T. Line ID: Danairat FB: Danairat Thanabodithammachari +668-1559-1446 Thank you