mirror of
https://github.com/Hizenberg469/Makefile-tutorial.git
synced 2026-04-19 22:02:24 +03:00
perl scripting
This commit is contained in:
100
perl/wiki
Normal file
100
perl/wiki
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
-> Perl is weakly typed language.
|
||||||
|
|
||||||
|
$a=10;
|
||||||
|
$b="a";
|
||||||
|
$c=$a.$b;
|
||||||
|
print $c;
|
||||||
|
|
||||||
|
output:
|
||||||
|
10a
|
||||||
|
|
||||||
|
|
||||||
|
-> It follows both procedural and object oriented paradigm.
|
||||||
|
|
||||||
|
Ex: Csc01BuildUnit.pm -> Base class = Build.pm
|
||||||
|
^ ^
|
||||||
|
| |
|
||||||
|
Derived class Base class
|
||||||
|
|
||||||
|
With .pm extension is for perl module
|
||||||
|
|
||||||
|
-> Perl is interpreted language, but as compare to interpreted language like
|
||||||
|
bash, etc, perl can be compiled to bytecode.
|
||||||
|
|
||||||
|
-> Perl can support .pl or .PL extension, but not restricted to these only
|
||||||
|
can also use .pm extension, which used in Tejas Networks.
|
||||||
|
|
||||||
|
-> '#!/usr/bin/env perl':
|
||||||
|
Will search for perl in $PATH environment variable from shell and then run from
|
||||||
|
that
|
||||||
|
|
||||||
|
The path mentioned is path for binary 'env' which is used to find
|
||||||
|
exectuable for perl
|
||||||
|
|
||||||
|
Use command 'which perl' to find the location of perl
|
||||||
|
|
||||||
|
-> '#!/usr/bin/perl':
|
||||||
|
This will be used in direct path for perl exectuable( absence of this
|
||||||
|
can lead to error.)
|
||||||
|
|
||||||
|
flags:
|
||||||
|
|
||||||
|
-d: debugging mode(suboption: next, run, step, print, etc).
|
||||||
|
* h: help
|
||||||
|
* run: start execution
|
||||||
|
* next: next line
|
||||||
|
* step: follow function call if there
|
||||||
|
* print: non-nested printing
|
||||||
|
* x: nested printing of objects, data structures, etc
|
||||||
|
* b: set break points
|
||||||
|
* c: continue
|
||||||
|
|
||||||
|
-I Directory: (include directory): Specifies @INC
|
||||||
|
It add specific directories to @INC array
|
||||||
|
|
||||||
|
-w: Shows important warnings
|
||||||
|
-W: Shows all warnings
|
||||||
|
-X: Disable all warnings
|
||||||
|
|
||||||
|
@INC: It is a array of include directory.
|
||||||
|
While running the scripts, we might see this in error logs.
|
||||||
|
This means that some include directories are missing.
|
||||||
|
|
||||||
|
-> -e "program": Runs perl script sent in as a program(Interactive mode
|
||||||
|
programming). To run a one liner perl command use -e flag
|
||||||
|
|
||||||
|
perl -e 'print "Hello World\n"'
|
||||||
|
Output: Hello World
|
||||||
|
|
||||||
|
-> eval perl: To run multi line perl command use eval perl.
|
||||||
|
|
||||||
|
For example:
|
||||||
|
eval perl
|
||||||
|
@a = ('csc01', 'csc02', 'cef8');
|
||||||
|
print @a, "\n";
|
||||||
|
print "@a\n";
|
||||||
|
|
||||||
|
CTRL+D
|
||||||
|
|
||||||
|
-> -t && -T && -U: For security & taint check/warnings.
|
||||||
|
|
||||||
|
* -T: check for unsecure operation tainting in given perl script
|
||||||
|
and treat them as fatal errors. Stop the scripts
|
||||||
|
* -t: small brother of -T, run the scripts with warnings
|
||||||
|
* -U: Allow unsecure and run scripts without warnings and errors.
|
||||||
|
|
||||||
|
-> Comments:
|
||||||
|
|
||||||
|
Begins with '#' symbol.
|
||||||
|
'#' is used for single line comment.
|
||||||
|
|
||||||
|
Multi-line comment is achieved using:
|
||||||
|
=begin
|
||||||
|
.....
|
||||||
|
comments
|
||||||
|
.....
|
||||||
|
=cut
|
||||||
|
|
||||||
|
exception:
|
||||||
|
'#!/usr/bin/perl' Shabang is not comment. It just tell
|
||||||
|
the bash that its a perl script.
|
||||||
Reference in New Issue
Block a user