设为首页 收藏本站
查看: 795|回复: 0

[经验分享] PROGRAMMING THE WORLD WIDE WEB Chapter 4 The Basics of Perl

[复制链接]

尚未签到

发表于 2017-5-19 12:52:56 | 显示全部楼层 |阅读模式
  ©
  Chapter 4 The Basics of Perl
· 4.1 Origins and Uses of Perl
· 4.2 Scalars and Their Operations
· 4.3 Assignment Operators
· 4.4 Control Statements
· 4.5 sts and Arrays
· 4.6 Hashes
· 4.7 References
· 4.8 Functions
  ©
  4.1 Origins and Uses of Perl
· Perl began as relatively small language with the modest
purpose of including and expanding on the operation of
the text-processing language awk and the system
administration capabities of the UNIX shell languages,
initially sh.
· Perl was first released in 1987, after being developed
and implemented by Larry Wall.
· Its facities for textual pattern matching are elaborate
and powerful, which is one of the reasons for its
widespread use in CGI programming.
· Perl is a language whose implementation is between
compiled (to machine code) and interpreted. Perl
programs are compiled to an intermediate form, in time
performance even though it is interpreted.
  ©
  4.2 Scalars and Their
Operations
· Perl has three categories of variables:
– scalars
– arrays
– hashes
· each identified by the first character of
their names
– $ for scalar variables
– @ for array variables
– % for hash variables
  ©
  4.2 Scalars and Their
Operations
· Scalar variables can store three different kinds
of values:
– numbers
– character strings
– references (which are addresses)
· The numeric values stored in scalar variables
are represented in double-precision floatingpoint
form.
· Character strings are treated as scalar units in
Perl. They are not arrays of individual characters.
  ©
  4.2 Scalars and Their
Operations
· 4.2.1 NUMERIC AND STRING TERALS
– Numeric terals can have the forms of either
integers or floating-point values.
72 7.2 72. 7E2 7e2 .7e2 7.e2 7.2E-2
– Integer terals can be written in hexadecimal
by preceding their first digit with either 0x or
0X.
  ©
  4.2 Scalars and Their
Operations
· 4.2.1 NUMERIC AND STRING TERALS
– String terals can appear in two forms,
depending on their demiters, single quotes( ‘)
or double quotes ( “).
– Single-quoted string terals cannot include
characters specified with escape sequences,
such as /n.
– the embedded single quote is preceded by a
backslash, as in this example:
‘You/’re the most freckly person I ever met ’
  ©
  4.2 Scalars and Their
Operations
· 4.2.1 NUMERIC AND STRING TERALS
– if you want a string teral with the same
characteristics as single-quoted strings, but
you want to use a different demiter, you
simply precede the demiter with q, as in this
example:
q$I don’t want to go, I won ’t go, I can’t go!$
  ©
  4.2 Scalars and Their
Operations
· 4.2.1 NUMERIC AND STRING TERALS
– if the new demiter is a parenthesis, a brace,
a bracket, or a pointed bracket, the left
element of the pair must be used on the left,
and the right element must be used on the
right:
q< I don’t want to go, I won ’t go, I can’t go!>
  ©
  4.2 Scalars and Their
Operations
· Double-quoted string terals differ from
single-quoted string terals in two ways:
– firs, they can include escape sequences;
“completion % /t Yards /t Touchdowns /t Inter ”
– second, embedded variable names are
interpolated into the string, which means that
their values are substituted for their names.
“Jack is $age years old ”
  ©
  4.2 Scalars and Their
Operations
· A different demiter can be specified for
string terals with the characteristics of
double-quoted strings by preceding the
new demiter with qq:
qq@”Why, I never!”, said she. @
· The null string (one with no characters)
can be denoted with either ‘’ or “”.
  ©
  4.2 Scalars and Their
Operations
· 4.2.2 SCALAR VARIABLES
· The names of all scalar variables, whether
predefined or programmer-defined, begin with
dollar signs($).
· Following the dollar sign, there must be at least
one letter. After that, there can be any number of
letters, digits, or underscore characters.
· There is no mit to the length of variable name.
· The letters in variable name are case-sensitive.
  ©
  4.2 Scalars and Their
Operations
· 4.2.2 SCALAR VARIABLES
· If you want to embed a variable name in a
double-quoted string but do not want it
interpolated, just backslash the dollar sign,
and the variable name will no longer be
recognized as such:
“The variable with the result is /$answer”
  ©
  4.2 Scalars and Their
Operations
· 4.2.2 SCALAR VARIABLES
· In Perl, variables are not expcitly
declared;
· A scalar variable that has not been
assigned a value by the program has the
value undef.
– The numeric value of undef is 0;
– the string value of undef is the null string.
  ©
  4.2 Scalars and Their
Operations
· 4.2.2 SCALAR VARIABLES
· Perl includes a large number of predefined
variables, which we sometimes call impcit
variables.
· The names of impcit scalar variables begin with
dollar signs. The rest of the name of a impcit
variables is often just one more special
character such as
– an underscore(_)
– a circumflex(^)
– or a backslash(/).
  ©
  4.2 Scalars and Their
Operations
· 4.2.3 NUMERIC OPERATORS
– Most of Perl’s numeric operators are
borrowed from C.
– binary operators +, -, * , /, **
– Except under unusual circumstances, numeric
operations are done in double-precision
floating point.
· 5/2 evaluates to 2.5
  ©
  4.2 Scalars and Their
Operations
· 4.2.4 STIRNG OPERATORS
· Perl strings are not stored or treated as
arrays of characters; rather, a string is a
single unit.
· String catenation is specified with the
operator denoted by a period.
$first=“Freddie”;
$first . “Freeloader”
  ©
  4.2 Scalars and Their
Operations
· 4.2.4 STIRNG OPERATORS
· The repetition operator is specified with an
x.
“More! ” x 3
  ©
  4.2 Scalars and Their
Operations
· 4.2.5 STRING FUNCTIONS
· Functions and operators in Perl are very
closely related. In fact, in many cases you
can treat them interchangeably.
– doit x
– doit(x)
  ©
  4.2 Scalars and Their
Operations
· 4.2.5 STRING FUNCTIONS
· The most commonly used string functions
are shown in Table 4.2. (Book page 92)
A character and the The character inserted between them
strings catenated
together with a st of
strings
join
hex A string The decimal value of the hexadecimal number in the string
uc A string The string with all lowercase letters converted to uppercase
lc A string The string with all uppercase letters converted to lowercase
length A String The number of characters in the string
chomp A String The string with any terminating newne characters removed
Name Parameters Result
  ©
  4.3 Assignment Operators
· Among the most fundamental constructs in
most programming languages are
assignment and the statements or
functions that provide keyboard input and
screen output.
  ©
  4.3 Assignment Operators
· 4.3.1 ASSIGNMENT STATEMENTS
– assignment operator is =
$salary=47500;
– compound assignment operators are binary
operators with the simple assignment
operator catenated to their right side.
$sum+=$value;
– All Perl statements except those at the end of
blocks must be terminated by semicolons.
– Comments in Perl are specified using the
pound sign(#).
  ©
  4.3 Assignment Operators
· 4.3.2 KEYBOARD INPUT
· All input and output in Perl is uniformly
thought of as file input and output.
· Files have external names but are
referenced in programs through internal
names, called filehandle
s.
· There are three predefined filehandles,
– STDIN
– STDOUT
– STDERR
  ©
  4.3 Assignment Operators
· 4.3.2 KEYBOARD INPUT
· String are input from the keyboard with the
ne input operator using STDIN as the
filehandle;
$in_data=<STDIN>;
· In many cases, the newne character is
not wanted, so the following idiom is
common:
chomp($indata=<STDIN>);
  ©
  4.3 Assignment Operators
· 4.3.3 SCREEN OUTPUT
· The operand for print is one or more string
terals, separated bye commas.
print “This is pretty easy /n”;
· The print function from C is also available
in Perl, including the format codes, such
as %7d and %5s.
Page 95 example quadeval.pl
  ©
  4.3 Assignment Operators
· 4.3.3 Screen Output
· execute Perl program
– %perl filename.pl
· The ne input operator can be used to get
input from a file specified as a commandne
arguments.
%perl filename.pl data.dat
$input=<>;
  ©
  4.4 Control Statements
· Perl has a powerful collection of
statements for controlng the execution
flow through its programs.
  ©
  4.4 Control Statements
· 4.4.1 CONTROL EXPRESSIONS
· The expressions upon which statement
control flow is based are either scalarvalued
expressions, relational expressions,
or compound expressions.
· If value of a scalar-valued expression is a
string, it is true unless it is either the empty
string or a zero string “0”.
· If the value is a number, it is true unless it
is zero.
  ©
  4.4 Control Statements
· Table 4.3 Relational Operators
Is greater or equal to >= ge
Is less than or equal to <= le
Is greater than > gt
Is less than < lt
Is not equal to != ne
Is equal to == eq
Operation Numeric operands String Operands
  ©
  4.4 Control Statements
· Table 4.4 Operator Precedence and
Associatively
<< >> left
> < >= <= lt gt le ge Nonassociative
== != eq ne Nonassociative
+ - . left
* / % x left
~ ! unary + and - right
** Right
++ -- Nonassociative
Operators Associatively
  ©
  4.4 Control Statements
· Table 4.4 Operator Precedence and
Associatively (cont.)
or xor left
and left
not Right
= += -= *= **= /= &= <<= right
>>= &&= |= ||= .= %= ^= x=
|| left
&& Left
| ^ Left
& Left
Operators Associativity
  ©
  4.4 Control Statements
· Because assignment statements have
values (the value assigned to the left side
variable), they can be used as control
expressions.
· One common use of this is to use an
assignment statement that uses <STDIN>
as its right side.
While ($next=<STDIN>) {…}
  ©
  4.4 Control Statements
· 4.4.2 SELECTION AND LOOP
STATEMENTS
· Control statements require some syntactic
container for sequences of statements
whose execution they are meant to control.
· Block is formed by putting the statements
in braces. Blocks can have local variables,
as you will see in Section 4.8.
· A control construct is a control statement
and the block whose execution it controls.
  ©
  4.4 Control Statements
· 4.4.2 SELECTION AND LOOP
STATEMENTS
· The only thing a bit different is that both
the then clause and the else clause
always must be blocks.
if ($a>10)
$b=$a*2; # Illegal - Not a block
  ©
  4.4 Control Statements
· 4.4.2 SELECTION AND LOOP
STATEMENTS
· Perl also has an unless statement, which
is related to its if statement, except that
the inverse of the value of the control
expression is used.
unless ($sum>1000){
print “We are not finished yet!/n”;
}
  ©
  4.4 Control Statements
· 4.4.2 SELECTION AND LOOP STATEMENTS
· The Perl while and for statements are similar to
those of C and its descendents. The body of
both must be blocks.
While (contrl expression) {
#loop body statement(s)
}f
or (initial expression; control expression; increment
expression){
#loop body statement(s)
}
  ©
  4.4 Control Statements
· 4.4.2 SELECTION AND LOOP STATEMENTS
· Perl has no case or switch statement. However,
it has an operator, last, that can be used to build
such a construct, using a labeled block.
· The last operator transfers control out of the
block in which it appears.
· last can include an operand, which is a block
label.
· Blocks can be labeled by placing a name and a colon
before the opening brace.
  ©
  4.4 Control Statements
· 4.4.2 SELECTION AND LOOP STATEMENTS
· The impcit variable $_ is frequently used in Perl
programs, most often as the default parameter
in a function call and as the default operand of
an operator. It is the default input operator.
· There are three uses of $_ in this while construct:
– as the target of the input operator
– as default parameter to print
– as the default operand of chomp
Page 101 example
  ©
  4.5 sts and Arrays
· Arrays in Perl are more flexible than those
of other common languages. This is a
result of the late binding of the lengths of
arrays and the types of the array elements.
· Arrays store only scalar values, but that
includes numbers, strings, and references,
which provide for nested data structures.
  ©
  4.5 sts and Arrays
· 4.5.1 ST TERALS
· A st is an ordered sequence of scalar values.
· A st teral, which is a parenthesized st of
scalar values, is the way a st value is specified
in a program.
(3.1415926 * $radius, “circles”, 17)
· The qw operator can be used on a sequence of
unquoted strings to quote all of them:
qw(peaches apples pears kumquats)
  ©
  4.5 sts and Arrays
· 4.5.2 ARRAYS
· All array names begin with an at sign,
which puts them in a namespace that is
different from that of the scalar variable
names.
· Arrays can be assigned st terals or other
arrays.
@st=qw(boy girl dog cat);
@creatures=@st;
  ©
  4.5 sts and Arrays
· If an array is used in scalar context (a
position in which a scalar value is
required), the array’s length (the number
of elements that are in the array) is used.
$len=@st;
· A st teral that contains only scalar
variable names can be the target of a st
assignment;
($first, $middle, $last)=(“George”, “Bernard”, “Shaw”);
  ©
  4.5 sts and Arrays
All Perl array elements use integers as
subscripts, and the lower bound subscript
of every array is zero.
· Array elements are referenced through
subscripts demited by brackets([ ]).
· A subscript can be any numeric-valued
expression.
@st=(2,4,6,8);
$second=$st[1];
  ©
  4.5 sts and Arrays
· The length of an array is dynamic:
@st=(“Monday”, ”Tuesday”, ”Wednesday”,
“Thursday”);
$st[4]=(“Friday”);
· The last subscript of @st can be
referenced as $#st. So, the length of
@st is $#st+1. The last subscript of an
array can be assigned to set its length to
whatever you want.
$#st=999;
  ©
  4.5 sts and Arrays
· Two different contexts of a variable name
or expression exist:
– scalar
– st
· Some of Perl’s operators force either
scalar or st context on their operand.
scalar (@st)
  ©
  4.5 sts and Arrays
· The foreach statement is used to process
the elements of an array.
foreach $value(@st) {
$value/=2;
}
Example each
  ©
  4.5 sts and Arrays
· 4.5.3 ST OPERATORS
– unshift: takes two operands, an array and a
scalar or st. The scalar or st is appended to
the beginning of the array.
unshift @first, @st
unshift @first, $value
– shift: removes and returns the first elements
of its given array operand.
$first=shift @st;
Example unshift
Example shift
  ©
  4.5 sts and Arrays
– pop: removes and returns the last element of
its given array operand.
$last= pop @st
– push: takes an array and a scalar or a st.
The scalar or st is added to the high end of
the array.
@st=(2,4,6);
push @st, (8,10); Example push
Example pop
  ©
  4.5 sts and Arrays
– spt: is used to break strings into parts using
a specified character as the basis for the spt.
$stoogestring=“Curly Larry Moe”
@stooges = spt / /, $ stoogestring;
– sort : takes an array parameter and uses
string comparison to sort the elements of the
array into alphabetic order.
Example spt
Example sort
  ©
  4.5 sts and Arrays
– 4.5.4 AN EXAMPLER OF STS AND
ARRAYS
– page 105-106
Example process_names.pl
  ©
  4.6 Hashes
· Associative arrays are arrays in which each data
element is paired with a key, which is used to
find the data element.
· Perl associative arrays are called hashes.
· The two fundamental differences between
arrays and hashes :
– arrays use numeric subscripts to address specific
elements; hashes use strings values (the keys) for
element addressing.
– the elements of array are ordered, but in hashes they
are not.
  ©
  4.6 Hashes
· Names of hash variables begin with
percent signs(%).
· st terals are used to initiaze hash
variables.
· The symbols => can be used between a
key and its associated data element, or
value.
%kids_ages=(“Jonh”=>31,”Genny”=>28,”
“Jake”+> 15, “Darcie”+>13);
  ©
  4.6 Hashes
· Arrays can be assigned to hashes, with the
sensible semantics that the odd-subscripted
elements of the array become the values in the
hash, an the even-numbered subscript elements
of the array becoming the keys in the hashes.
· An individual value element of a hash can be
referenced by “subscripting” the hash name with
a key. Braces are used to specify the
subscripting operation.
$genny_age=$kids_ages{“Genny”};
  ©
  4.6 Hashes
· New values are added to a hash by assigning
the value of the new element to a reference to
the key of the new element, as in this example:
$kids_ages{“Aidan”}=0;
· An elements is removed from a hash with the
delete operator:
delete $kids_age{“Genny”};
· Your can determine whether an element is in a
hash with the exists operator:
if (exists $kids_age{“Freddie”}) …
  ©
  4.6 Hashes
· The keys and values can be extracted into
arrays with the operators keys and values,
respectively:
foreach $child (keys %kids_ages) {
print “The age of $child is
$kids_ages{$child}/n”
}
@ages=values %kids_ages;
print “All of the ages are: @ages /n”;
Example hashes
  ©
  4.6 Hashes
· Perl has a predefined hash named %ENV, which
stores operating system environment variables.
· Environment variables are used to store
information about the system on which Perl is
running.
· The environment variables and their respective
values in %ENV can be accessed by any Perl
program. In Chapter 5, we will make use of
environment variables.
  ©
  4.7 References
· A reference is a scalar variable that
references an other variable or a teral.
$age=42;
$ref_age=/$age;
@stooges=(“Curly”, “Larry”, “Moe”);
$ref_stooges=/@stooges;
  ©
  4.7 References
· A reference to a st teral is created by
putting the teral value in brackets as
shown:
$ref_salaries=[42500, 29800, 50000, 35250]
  ©
  4.7 References
· A reference to a hash teral is created by
putting the teral value in braces:
$ref_age={
‘Curly’=>41,
‘Larry’=>38,
‘Moe’=>43,
};
  ©
  4.7 References
· A reference (or a pointer) can specify two
different values:
– its own, which is an address,
– or a reference (or pointer) variable specify the latter is
called dereferencing.
· There are two ways to dereferencing
– an extra dollar sign can be appended to the beginning
of the reference’s name.
$$ref_stooges[3]=“Maxine”;
– If the reference is to an array or hash, ther is a
second way to specify dereferencing, using the ->
operator between the variable ’s name and its
subscript.
$ref_stooges->[3]=“Maxine”;
  ©
  4.8 Functions
· Subprograms are central to the usefulness
of any programming language. Perl’s
subprograms are all functions, as in its
heritage language, C. This section
describes the basics of Perl functions.
  ©
  4.8 Functions
· 4.8.1 FUNDATMENTALS
· A function definition includes the function ’s
header and a block of code that describes its
actions.
· A function that returns a useful value is called in
the position of an operand in a expression.
· A function that does not return an interesting
value is called by a standalone statement, which
consists of the function ’s name followed by a
parenthesized st of the parameters being sent
to the function.
  ©
  4.8 Functions
· A function definition specifies the value to
be returned in two ways, impcitly and
expcitly.
· A function can have any number of calls to
return, including none.
· If there are no calls to return in a function,
its returned value is the value of the last
expression evaluated in the functions.
  ©
  4.8 Functions
sub product 1 {
return ($first * $second);
}
sub product2 {
$first * $second;
}
  ©
  4.8 Functions
· 4.8.2 LOCAL VARIABLES
· Variables that are impcitly declared have
global scope-that is , they are visible in the
entire program.
· Such variables are declared to have local
scope in a function by including their
names as parameters to the my function.
my $count=0;
  ©
  4.8 Functions
· 4.8.2 LOCAL VARIABLES
· If more than one variable is declared by a
call to my, they must be placed in
parentheses, as in this example:
my ($count, $sum)=(0,0);
· Notice the use of the st assignment to
initiaze these local variables.
  ©
  4.8 Functions
· 4.8.2 LOCAL VARIABLES
· If the name of a local variable confcts
with that of a global variable, the local
variable is used.
· Perl includes a second kind of local
variables, which are declared with the
local reserved word.
  ©
  4.8 Functions
· 4.8.3 PARAMETERS
· The parameter values that appear in a call to a
function are called actual parameters.
· The parameter names used in the function,
which correspond to the actual parameters, are
called formal parameters.
· There are two common models of parameter
transfers used in the nkage between a function
and its caller:
– pass by value
– pass by reference
  ©
  4.8 Functions
· 4.8.3 PARAMETERS
· All parameters are communicated through
a special impcit array, @_.
sub plus10{
$_[0]+=10;
}
plus10($a);
  ©
  4.8 Functions
· 4.8.3 PARAMETERS
· Pass-by-value parameters are
implemented by assigning the passed
values in @_ to local variables - for
example:
sub fun1{
my($a,$b)=@_;
++$a*++$b;
}
  ©
  4.8 Functions
· 4.8.3 PARAMETERS
· References to variables can be used as actual
parameters, witch provides pass-by -references
parameters.
sub sub1 {
my($ref_len,$ref_st)=@_;
my $count;
for ($count =0; $count< $$ ref_len;
$$ref_st[$count++]--){}
}
sub1(/$len,/@myst);
  ©
  4.8 Functions
· 4.8.4 An example
· Page 112- 113
Example tst_median.pl
  ©
  Chapter 4 The basics of Perl
· 4.9 The pack and unpack function
· 4.10 Pattern Matching Using Regular
Expressions
· 4.11 File Input and Output
· 4.12 An Example
· 4.13 Summary
· 4.14 Review Questions
· 4.15 Exercise
  ©
  4.9 The pack and unpack
function
· In some situations, values must be
converted, either form numbers to text, or
vice versa.
· The pack and unpack functions are
designed to perform these conversions.
· Both functions take two, a parameters, a
template, which is a character string that
specifies the particular conversion, and a
st that specifies the data to be packed or
unpacked.
  ©
  4.9 The pack and unpack
function
· A description of all of the template
character codes can be found by typing
perldoc -f pack.
· The pack function can be used to build a
text string from an array of numeric values.
· The unpack function can be used to get
the numeric codes of the characters in a
string and make them the elements of an
array, or the values of a st of scalar
variables.
  ©
  4.9 The pack and unpack
function
· These particular conversions (text string to an array of
numbers, and a st or array of numbers to a text string)
are specified with the “C” template character code as the
first parameter to pack or unpack.
· The “C” code specifies an unsigned character. If there
are more than one character in the string, the conversion
can be specified with either a string of “C”s or as “C”
followed by the teral that represents the number you
want.
$str[0]= ‘k’;
$str[1]= ‘c’;
$kc_str=pack(“CC”,@str);
@str2=unpack(“CC”,$kc_str);
  ©
  4.10 Pattern Matching Using
Regular Expressions
· One of the greatest strengths of Perl,
particularly when compared with other
common high-level programming
languages, is its powerful facity for textual
pattern matching.
· Patterns are specified in Perl in a form that
is based on regular expressions, which
were developed to define members of a
simple class of formal languages.
  ©
  4.10 Pattern Matching
Using Regular Expressions
· 4.10.1 CHARACTER AN CHARACTERCLASS
PATTERNS
The pattern-matching operation is
specified with an operator, m.
The pattern itself is demited by slashes. If
slashes are used to demit the pattern, the
m operator is not required.
The string against witch the matching is
attempted is by default in the impcit
variable $_.
  ©
  4.10 Pattern Matching
Using Regular Expressions
· 4.10.1 CHARACTER AN CHARACTER-CLASS
PATTERNS
Within a pattern, “normal” characters match
themselves. Normal means that they are not
metacharacters, which are characters that have
special meanings in some contexts in patterns.
/ | ( ) [ ] { } ^ $ * + ? .
Metacharacter can themselves be matched by
being immediately preceded by a back slash.
  ©
  4.10 Pattern Matching
Using Regular Expressions
· 4.10.1 CHARACTER AN CHARACTERCLASS
PATTERNS
How normal characters are used for
pattern matching:
if (/rabbit/) {
print “The word ‘rabbit’ appears
somewhere in $_ /n”;
}
  ©
  4.10 Pattern Matching
Using Regular Expressions
· 4.10.1 CHARACTER AN CHARACTERCLASS
PATTERNS
· The period matches any character except
newne.
· /snow./
  ©
  4.10 Pattern Matching
Using Regular Expressions
· 4.10.1 CHARACTER AN CHARACTERCLASS
PATTERNS
· It is often convenient to be able to specify
classes of characters rather than individual
characters. Such classes are defined by
placing the desired characters in brackets.
· [abc]
  ©
  4.10 Pattern Matching
Using Regular Expressions
· 4.10.1 CHARACTER AN CHARACTERCLASS
PATTERNS
· Also, you could have the following
character class, which matches any
lowercase letter form ‘a’ to ‘h’:
· [a-h]
  ©
  4.10 Pattern Matching
Using Regular Expressions
· 4.10.1 CHARACTER AN CHARACTERCLASS
PATTERNS
· If a circumflex character (^) is the first
character in a class, it inverts the specified
set .
· [^aeiou]
  ©
  4.10 Pattern Matching
Using Regular Expressions
· 4.10.1 CHARACTER AN CHARACTERCLASS
PATTERNS
· In many cases, you‘ll want to repeat a
character or character-class pattern. to
repeat a pattern, a number quantifier,
demited by races, is attached.
· /xy{4}z/
  ©
  4.10 Pattern Matching
Using Regular Expressions
· 4.10.1 CHARACTER AN CHARACTERCLASS
PATTERNS
· Perl also includes three nonnumeric
quantifiers:
– asterisk(*): means zero or more repetitions,
– plus (+): means one or more repetitions,
– question mark (?): means one or none.
· /x*y+z?/
  ©
  4.10 Pattern Matching
Using Regular Expressions
· 4.10.1 CHARACTER AN CHARACTERCLASS
PATTERNS
· Table 4.5 Predefined Character Classes
Not A
whitespace
character
[^/
r/t/n/f
]
/S
A
whitespace
character
[/
r/t/n/f
]
/s
Not a word character
[^A-Za-z_0-9]
/W
A word character (
alphanumberic
)
[A-Za-z_0-9]
/w
Not a digit
[^0-9]
/D
A digit
[0-9]
/d
Matches
Equivalent Pattern
Name
  ©
  4.10 Pattern Matching
Using Regular Expressions
· 4.10.1 CHARACTER AN CHARACTERCLASS
PATTERNS
· There are two additional named patterns
that are often useful.
– /b (boundary), matches the boundary position
between a word character and a non-word
character, in either order.
– /B is the opposite of /b; it matches a non-word
boundary.
  ©
  4.10 Pattern Matching
Using Regular Expressions
· 4.10.2 BINDING OPERATORS
· Sometimes you’ll want to match a pattern
against a string that is not in $_. A string in
any scalar variable can be used by using
the binding operators =~ and !~.
· $string =~ //d/; # looks for a digit in $string
· $string !~ //d/; # looks for non digit in $string
  ©
  4.10 Pattern Matching
Using Regular Expressions
· 4.10.3 ANCHORS
· It is frequently useful to be able to specify
that a pattern must match at a particular
position in the string.
· The most common example of this is
requiring a pattern to match at one specific
end of the string. A pattern is tied to a
string position with an anchor.
  ©
  4.10 Pattern Matching
Using Regular Expressions
· 4.10.3 ANCHORS
· A pattern must match at the beginning of
the string and begin with a circumflex(^)
anchor.
– A pattern must match at the beginning of the string
and begin with a circumflex(^) anchor.
/^pearl/
– A pattern that must at the end of a string ends with a
dollar sign anchor.
/gold$/
  ©
  4.10 Pattern Matching
Using Regular Expressions
· 4.10.4 PATTERN MODIFIERS
· Modifiers can be attached to patterns to
change how they are used, thereby
increasing their flexibity.
· The modifiers are specified as letters just
after the right demiter of the pattern.
– The i modifier makes the letters in the pattern match
either uppercase or lowercase letters in the string.
/gold$/i
– The x modifier allows wihtespace to appear in the
pattern. eg : /gold$/x
  ©
  4.10 Pattern Matching
Using Regular Expressions
· 4.10.5 REMEMBERING MATCHES
· The part of the string that matched a part
of the pattern can be saved in an impcit
variable for later use. The part of the
pattern whose match you want to save is
placed in parentheses.
· The substring that matched the first
parenthesized part of the pattern is saved
in $1, the second in $2, and so forth.
Example page 118
  
©
  4.10 Pattern Matching
Using Regular Expressions
· 4.10.6 SUBSTITUTIONS
· Sometimes the substring of a string that
matched a pattern must be replaced by
another string. Perl’s substitute operator is
designed to do exactly that.
· Type typical form of the substitute operator
is :
s/Pattern/New_string/
  ©
  4.10 Pattern Matching
Using Regular Expressions
· 4.10.6 SUBSTITUTIONS
· The substitute operator can have two
modifiers, g and e. The g modifier tells the
substitute operator to find all matches in
the given string and replace all of them:
$_= “Fred, Freddie, and Frederica were sibngs ”;
s/Fre/Boy/g;
  ©
  4.10 Pattern Matching
Using Regular Expressions
· 4.10.6 SUBSTITUTIONS
· The e modifier tells the substitute operator
to execute the New_String.
s/%([/dA-Fa-f])/pack(“c”,hex($1))/e;
  ©
  4.10 Pattern Matching
Using Regular Expressions
· 4.10.6 SUBSTITUTIONS
· The i modifier can also be used with the
substitute operator, as in this code:
$_ = “Is it Rose, rose, or ROSE? ”;
s/Rose/rose/ig;
  ©
  4.10 Pattern Matching
Using Regular Expressions
· 4.10.7 THE TRANSTERATE
OPERATOR
· Perl has a transterate operator, tr, which
translates a character or character class to
another character or character class,
respectively.
· tr/;/:/;
· tr/A-Z/a-z/;
· tr//,/.//;
  ©
  4.11 File Input and Output
· File are referenced through program
variables called filehandles, which do not
begin with special characters.
· open(INDAT, “<temperatures”);
· open(OUTDAT, “>averages”);
  ©
  4.11 File Input and Output
· Because open can fail, it is often used with
the die function, as in this example:
· open(INDAT, “<temperatures”) or
die “Error - unable to open
temperatures $!”;
The predefined variable, $!, has the
value of the system variable,
errno
,
which is useful for determining the
reason open filed.
  ©
  4.11 File Input and Output
· Table 4.6 File Use Speicfications
Output, starting at the end of the
existing data on the file
>>
Output, starting at the beginning of
the file
>
< Input (the default)
Character(s) Meaning
  ©
  4.11 File Input and Output
· One ne of text can be written to a file with
the print function.
print OUTDAT “The result is : $result /n”
· Notice that no comma is used between the
filehandle and the string.
· nes of text can be read from a file using
the ne input operator.
$next_ne=<INDAT>;
  ©
  4.11 File Input and Output
· Multiple nes can be read from a file with
the read function.
· read(filehandle, buffer, length [, offset]);
$chars=read(ANIMALS, $buf, 255);
@nes=spt //n/, $buf;
  ©
  4.12 An Example
· Page 123 -125
Example wages.pl
  ©
  Chapter 4 The basics of Perl
· 4.13 Summary
· 4.14 Review Questions
· 4.15 Exercise

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-379120-1-1.html 上篇帖子: Perl 学习记录3 基本构件的堆栈:列表与数组 下篇帖子: 【方法3:Perl版本】删除Map中Value重复的记录,并且只保留Key最小的那条记录
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表