Perl has plenty of special variables.
The most usable is probably $_.
$_ stands for default input and pattern-searching space.
$_ implicitly assigned to input streams, subroutine variables, pattern-searching space(when used without an =~ operator).
$_ is a default iterator variable in a foreach loop if no other variable is supplied
The following block
while (<STDIN>)
{
s/[A-Z]*//g;
print;
}is equivalent towhile ($_ = <STDIN>)
{
$_ =~ s/[A-Z]*//g;
print $_;
}$_ is a global variable so this can produce some unwanted side-effects in some cases. The output of the following codewhile (<STDIN>)
{
print;
last;
}
print;
{
print;
while (<STDIN>)
{
s/[A-Z]*//g;
print;
last;
}
print;
}
print;should beabcABC<<-- my input string abcABC abcABC abcABC abcABC<<-- my input string abc abc abcIt's possible to declare $_ with my to be relative to the scope of the block(in perl 5.9.1 and later) and using our restores the global scope of the $_.
The output of the this code
while (<STDIN>)
{
print;
last;
}
print;
{
print;
my $_;
while (<STDIN>)
{
s/[A-Z]*//g;
print;
last;
}
print;
}
print;should beabcABC<<-- my input string abcABC abcABC abcABC abcABC<<-- my input string abc abc abcABCand with our
while (<STDIN>)
{
print;
last;
}
print;
{
print;
my $_;
while (<STDIN>)
{
s/[A-Z]*//g;
print;
last;
}
our $_;
print;
}
print;should beabcABC<<-- my input string abcABC abcABC abcABC abcABC<<-- my input string abc abcABC abcABCUnfortunately perl 5.10 is not by default in most linux distribution and some workarounds should be done to achieve functionality of my and our with $_.


No comments:
Post a Comment