Exploring the Future Potential of AI-Enabled Smartphone Processors
perl-pocket
1. A Brief Pocket Reference for Perl Programming
This pocket reference was created to help the author to refresh Perl,
presumably aiming at an intermediate programmer or advanced. This pocket
reference is mainly based on several anonymous resources found on the
Internet. It’s free to distribute/modify. Any inquiry should be mailed to
joumon@cs.unm.edu.
o Perl
- starts with #!/usr/bin/per or with a proper path
- each statement ends with ;
- run with –d for debugging
- run with –w for warning
- comment with #
- case-sensitive
o Scalar Variables
- start with $
- use ‘my’
ex)
$var = 3;
my $greet = “hello?”
- $_ : default variable for most operations
- @ARGV : arguments array
- @_ : argument array to functions and access with $_[index]
- use local for a local variable in a function
o Operators
- +/-/*///%/**/./x/=/+=/-=/.=
- single-quote and double-quote
ex)
“hello”.”world” --> “helloworld”
“hello”x2 --> “hellohello”
$var = 3;
print “hi$var”; --> “hi3”
print ‘hi$var’; --> “hi$var”
- strings enclosed in single quotes are taken literally
- strings enclosed in double quotes interpret variables or control
characters ($var, n, r, etc.)
o Arrays
- declare as @name=(elem1, elem2, ...);
ex)
my @family = (“Mary”, “John”)
$family[1] --> “John”
push(@family, “Chris”); --> push returns length
my @wholefamily = (@family, “Bill”);
push(@family, “Hellen”, “Jason”)
push(@family, (“Hellen”, “Jason”));
2. push(@wholefamily, @family);
$elem=pop(@family) --> pos returns an element
$len=@family --> set length
$str=”@family” --> set to string
($a, $b) = ($c, $d)
($a, $b) = @food; --> $a is the first element and $b is the rest
(@a, $b) = @food; --> $b is undefined
print @food;
print “@food”;
print @food.””;
- use $name[index] to index
- index starts from zero
- $#array returns index of last element of an array, i.e. n-1
o File Handling
- use open(), close()
ex)
$file=”hello.txt”;
open(INFO, $file);
while(<INFO>) {...} # or @lines = <INFO>;
close(INFO);
- use <STDIN>,<STDOUT>,<STDERR>
ex)
open(INFO, $file); # Open for input
open(INFO, ">$file"); # Open for output
open(INFO, ">>$file"); # Open for appending
open(INFO, "<$file"); # Also open for input
open(INFO, '-'); # Open standard input
open(INFO, '>-'); # Open standard output
- use print <INFO> ...
o Control Structures
- foreach $var (@array) {...}
- for(init; final; step) {...}
- while (predicate) {...}
- do {...} while/until (predicate);
- comparison operators: ==/!=/eq/ne
- logical operators: ||/&&/!
- if (predicate) {...} elsif (predicate) {...} ... else {...}
- if (predicate) {...}: if predicate is missing, then $_ is used
o Regex
- use =~ for pattern matching
- use !~ for non-matching
ex)
$str = “hello world”
3. $a =~ /hel/ --> true
$b !~ /hel/ --> false
- if we assign to $_, then we could omit $_
ex)
$_ =”hello”
if (/hel/) {...}
- substitution: s/source/target/
- use g for global substitution and use i for ignore-case
ex)
$var =~ s/long/LONG/
s/long/LONG/ # $_ keeps the result
- use $1, $2, ..., $9 to remember
ex)
s/^(.)(.*)(.)$/321/
- use $`, $&, $’ to remember before, during, and after matching
ex)
$_ = "Lord Whopper of Fibbing";
/pp/;
$` eq "Lord Wo"; # true
$& eq "pp"; # true
$' eq "er of Fibbing"; #true
$search = "the";
s/$search/xxx/g;
- tr function allows character by character translation
ex)
$sentence =~ tr/abc/edf/
$count = ($sentence =~ tr/*/*/); # count
tr/a-z/A-Z/; # range
o More Regex
-. # Any single character except a newline
- ^ # The beginning of the line or string
- $ # The end of the line or string
- * # Zero or more of the last character
- + # One or more of the last character
-? # Zero or one of the last character
- [qjk] # Either q or j or k
- [^qjk] # Neither q nor j nor k
- [a-z] # Anything from a to z inclusive
- [^a-z] # No lower case letters
- [a-zA-Z] # Any letter
- [a-z]+ # Any non-zero sequence of lower case letters
- jelly|cream # Either jelly or cream
- (eg|le)gs # Either eggs or legs
- (da)+ # Either da or dada or dadada or...
- n # A newline
- t # A tab
- w # Any alphanumeric (word) character.
# The same as [a-zA-Z0-9_]
- W # Any non-word character.
# The same as [^a-zA-Z0-9_]
4. - d # Any digit. The same as [0-9]
- D # Any non-digit. The same as [^0-9]
- s # Any whitespace character: space,
# tab, newline, etc
- S # Any non-whitespace character
- b # A word boundary, outside [] only
- B # No word boundary
- | # Vertical bar
- [ # An open square bracket
- ) # A closing parenthesis
- * # An asterisk
- ^ # A carat symbol
- / # A slash
- # A backslash
- {n} : match exactly n repetitions of the previous element
- {n,} : match at least n repetitions
- {n,m} : match at least n but no more than m repetitions
o Miscellaneous Functions
- chomp()/chop()/split()/shift()/unshift()
o Functions
- sub FUNC {...}
- parameters in @_
- the result of the last thing is returned