| |
String Functions
-
- chop
- chop(LIST)
- chop(VARIABLE)
- chop VARIABLE
- chop
- Chops off the last character of a
string and returns the character chopped. It's used
primarily to remove the newline from the end of an input
record, but is much more efficient than s/\n// because it
neither scans nor copies the string. If VARIABLE is
omitted, chops $_. Example:
while (<>) {
chop; # avoid \n on last field
@array = split(/:/);
...
}
You can actually chop anything
that's an lvalue, including an assignment:
chop($cwd = \`pwd\`);
chop($answer = <STDIN>);
If you chop a list, each element is
chopped. Only the value of the last chop is returned.
- crypt(PLAINTEXT,SALT)
- Encrypts a string exactly like the
crypt() function in the C library. Useful for checking
the password file for lousy passwords. Only the guys
wearing white hats should do this.
- eval(EXPR)
- eval EXPR
- eval BLOCK
- EXPR is parsed and executed as if it
were a little perl program. It is executed in the
context of the current perl program, so that any
variable settings, subroutine or format definitions
remain afterwards. The value returned is the value of the
last expression evaluated, just as with subroutines. If
there is a syntax error or runtime error, or a die statement is executed, an undefined value
is returned by eval, and $@ is set to the error message. If there was
no error, $@ is
guaranteed to be a null string. If EXPR is omitted,
evaluates $_. The final
semicolon, if any, may be omitted from the expression.
Note that, since eval traps otherwise-fatal
errors, it is useful for determining whether a particular
feature (such as dbmopen or symlink) is implemented. It is also Perl's
exception trapping mechanism, where the die operator is used to raise exceptions.
If the code to be executed doesn't
vary, you may use the eval-BLOCK form to trap run-time
errors without incurring the penalty of recompiling each
time. The error, if any, is still returned in $@. Evaluating a single-quoted string (as EXPR)
has the same effect, except that the eval-EXPR form
reports syntax errors at run time via $@, whereas the
eval-BLOCK form reports syntax errors at compile time.
The eval-EXPR form is optimized to eval-BLOCK the first
time it succeeds. (Since the replacement side of a
substitution is considered a single-quoted string when
you use the e modifier, the same optimization occurs
there.) Examples:
# make divide-by-zero non-fatal
eval { $answer = $a / $b; }; warn $@ if $@;
# optimized to same thing after first use
eval '$answer = $a / $b'; warn $@ if $@;
# a compile-time error
eval { $answer = };
# a run-time error
eval '$answer ='; # sets $@
- index(STR,SUBSTR,POSITION)
- index(STR,SUBSTR)
- Returns the position of the first
occurrence of SUBSTR in STR at or after POSITION. If
POSITION is omitted, starts searching from the beginning
of the string. The return value is based at 0, or
whatever you've set the $[ variable to. If the substring is not found,
returns one less than the base, ordinarily -1.
- length(EXPR)
- length EXPR
- Returns the length in characters of
the value of EXPR. If EXPR is omitted, returns length of $_.
- q/STRING/
- qq/STRING/
- qx/STRING/
- These are not really functions, but
simply syntactic sugar to let you avoid putting too many
backslashes into quoted strings. The q operator is a
generalized single quote, and the qq operator a
generalized double quote. The qx operator is a
generalized backquote. Any non-alphanumeric delimiter can
be used in place of /, including newline. If the
delimiter is an opening bracket or parenthesis, the final
delimiter will be the corresponding closing bracket or
parenthesis. (Embedded occurrences of the closing bracket
need to be backslashed as usual.) Examples:
$foo = q!I said, "You said, 'She said it.'"!;
$bar = q('This is it.');
$today = qx{ date };
$_ .= qq
*** The previous line contains the naughty word "$&".\n
if /(ibm|apple|awk)/; # :-)
- rindex(STR,SUBSTR,POSITION)
- rindex(STR,SUBSTR)
- Works just like index except that it
returns the position of the LAST occurrence of SUBSTR in
STR. If POSITION is specified, returns the last
occurrence at or before that position.
- substr(EXPR,OFFSET,LEN)
- substr(EXPR,OFFSET)
- Extracts a substring out of EXPR and
returns it. First character is at offset 0, or whatever
you've set $[ to. If
OFFSET is negative, starts that far from the end of the
string. If LEN is omitted, returns everything to the end
of the string. You can use the substr() function as an
lvalue, in which case EXPR must be an lvalue. If you
assign something shorter than LEN, the string will
shrink, and if you assign something longer than LEN, the
string will grow to accommodate it. To keep the string
the same length you may need to pad or chop your value
using sprintf().
|
|
|