|
Perl Interview Questions and Answers
When would `local $_' in a function ruin your day?
When your caller was in the middle for a while(m//g)
loop
The /g state on a global variable is not protected by
running local on it. That'll teach you to stop using
locals. Too bad $_ can't be the target of a my() -- yet.
What happens to objects lost in "unreachable" memory,
such as the object returned by Ob->new() in `{ my $ap; $ap
= [ Ob->new(), \$ap ]; }' ?
Their destructors are called when that interpreter
thread shuts down.
When the interpreter exits, it first does an exhaustive
search looking for anything that it allocated. This
allows Perl to be used in embedded and multithreaded
applications safely, and furthermore guarantees
correctness of object code.
Assume that $ref refers to a scalar, an array, a hash or
to some nested data structure. Explain the following
statements:
$$ref; # returns a scalar
$$ref[0]; # returns the first element of that array
$ref- > [0]; # returns the first element of that array
@$ref; # returns the contents of that array, or number
of elements, in scalar context
$&$ref; # returns the last index in that array
$ref- > [0][5]; # returns the sixth element in the first
row
@{$ref- > {key}} # returns the contents of the array
that is the value of the key "key"
How do you match one letter in the current locale?
/[^\W_\d]/
We don't have full POSIX regexps, so you can't get at
the isalpha() <ctype.h> macro save indirectly. You ask
for one byte which is neither a non-alphanumunder, nor
an under, nor a numeric. That leaves just the alphas,
which is what you want.
How do I print the entire contents of an array with
Perl?
To answer this question, we first need a sample array.
Let's assume that you have an array that contains the
name of baseball teams, like this:
@teams = ('cubs', 'reds', 'yankees', 'dodgers');
If you just want to print the array with the array
members separated by blank spaces, you can just print
the array like this:
@teams = ('cubs', 'reds', 'yankees', 'dodgers');
print "@teams\n";
But that's not usually the case. More often, you want
each element printed on a separate line. To achieve
this, you can use this code:
@teams = ('cubs', 'reds', 'yankees', 'dodgers');
foreach (@teams) {
print "$_\n";
}
Perl uses single or double quotes to surround a zero or
more characters. Are the single(' ') or double quotes ("
") identical?
They are not identical. There are several differences
between using single quotes and double quotes for
strings.
1. The double-quoted string will perform variable
interpolation on its contents. That is, any variable
references inside the quotes will be replaced by the
actual values.
2. The single-quoted string will print just like it is.
It doesn't care the dollar signs.
3. The double-quoted string can contain the escape
characters like newline, tab, carraige return, etc.
4. The single-quoted string can contain the escape
sequences, like single quote, backward slash, etc.
How many ways can we express string in Perl?
Many. For example 'this is a string' can be expressed
in:
"this is a string"
qq/this is a string like double-quoted string/
qq^this is a string like double-quoted string^
q/this is a string/
q&this is a string&
q(this is a string)
How do you give functions private variables that retain
their values between calls?
Create a scope surrounding that sub that contains
lexicals.
Only lexical variables are truly private, and they will
persist even when their block exits if something still
cares about them. Thus:
{ my $i = 0; sub next_i { $i++ } sub last_i { --$i } }
creates two functions that share a private variable. The
$i variable will not be deallocated when its block goes
away because next_i and last_i need to be able to access
it.
Page Numbers :
1
2
3
4
5
Have a Question ?
post your questions here. It
will be answered as soon as possible.
Check
HTML Interview
Questions for more HTML Interview Questions with Answers
Check
Job Interview Questions
for more Interview Questions with Answers
|