Re: REGEXP removing - il- - -b-f and - il- - - - f
- From: krahnj@xxxxxxxxx (John W. Krahn)
- Date: Wed, 27 Apr 2005 17:29:59 -0700
Ing. Branislav Gerzo wrote:
JupiterHost.Net [JN], on Wednesday, April 27, 2005 at 10:23 (-0500) thinks about:
JN> No its not, you can if you want but it pointless:
I read it somewhere (it was perl cookbook/learning perl from o'reilly maybe). Always declare
my @a = ( );
And here is why, if I remember correctly - if you declare my @a; you should think you declare empty array. After that, in script you should use @a; which do nothing. So my @a = ( ); is good practise I think. It is the same for hashes.
"my @a;" creates the lexical variable @a at compile time and since it has just been created it will be empty. "my @a = ();" creates the variable during compilation but the assignment (IIRC) has to be done at run time. The end result is the same but the assignment makes it a tiny bit slower (not enough to really worry about.)
$ perl -e'
use Benchmark qw(cmpthese);
cmpthese( -10, {
assign => sub { my @a = (); my @b = (); my @c = (); my @d = (); return @a .. @b . @c . @d },
noassign => sub { my @a; my @b; my @c; my @d; return @a . @b . @c . @d }
} );
'
Rate assign noassign
assign 112694/s -- -2%
noassign 115567/s 3% --
>> $|++;, and I use $| = 1; JN> That two ways to assign 1 to $|, its not similar to the array thing at all.
I meant good practise in scripts. What about when somewhere in script will be $| = -1; pr $|-- ? $| = 1 will work always.
Any true (numeric) value assigned to $| will set it to 1 and any false (numeric) value will set it to 0.
$ perl -e'
for ( -876868, -1, 1, 84859, "0", "abcdef", undef ) {
$| = $_;
print "\$_ = $_";
print " and \$| = ", $|;
print " and ++\$| = ", ++$|;
print "\n";
}
'
$_ = -876868 and $| = 1 and ++$| = 1
$_ = -1 and $| = 1 and ++$| = 1
$_ = 1 and $| = 1 and ++$| = 1
$_ = 84859 and $| = 1 and ++$| = 1
$_ = 0 and $| = 0 and ++$| = 1
$_ = abcdef and $| = 0 and ++$| = 1
$_ = and $| = 0 and ++$| = 1
--$| and $|-- have the affect of toggling the value of $| between 0 and 1.
$ perl -e'
for ( -876868, -1, 1, 84859, "0", "abcdef", undef ) {
$| = $_;
print "\$_ = $_";
print " and \$| = $|";
print " and --\$| = ", --$|;
print " and --\$| = ", --$|;
print "\n";
}
'
$_ = -876868 and $| = 1 and --$| = 0 and --$| = 1
$_ = -1 and $| = 1 and --$| = 0 and --$| = 1
$_ = 1 and $| = 1 and --$| = 0 and --$| = 1
$_ = 84859 and $| = 1 and --$| = 0 and --$| = 1
$_ = 0 and $| = 0 and --$| = 1 and --$| = 0
$_ = abcdef and $| = 0 and --$| = 1 and --$| = 0
$_ = and $| = 0 and --$| = 1 and --$| = 0John -- use Perl; program fulfillment .
- References:
- Re: REGEXP removing - il- - -b-f and - il- - - - f
- From: DBSMITH
- Re: REGEXP removing - il- - -b-f and - il- - - - f
- From: JupiterHost.Net
- Re: REGEXP removing - il- - -b-f and - il- - - - f
- From: JupiterHost.Net
- Re: REGEXP removing - il- - -b-f and - il- - - - f
- Prev by Date: Re: Reading MSAccess Files under Linux?
- Next by Date: Re: REGEXP removing - il- - -b-f and - il- - - - f
- Previous by thread: Re: REGEXP removing - il- - -b-f and - il- - - - f
- Next by thread: Re: REGEXP removing - il- - -b-f and - il- - - - f
- Index(es):
Relevant Pages
|