James Edward Gray II <[EMAIL PROTECTED]> wrote:
:
: I would like to add some code to a sub that only needs to
: be run the first time the sub executes, or before is fine.
: If I add an INIT { } block at the beginning of the sub,
: would that do it?
No. Not in a subroutine.
: Are there other ways? Thanks.
You could use a Persistent Private Variable. It is
declared outside your sub and is only visible to your
sub.
use strict;
use warnings;
print foo();
print foo();
print foo();
{
# the value of $ran_once will be incremented each time
# the sub runs. Perl will keep the new value between
# calls to the sub. $ran_once is only available to the
# sub
my $ran_once = 0;
sub foo {
# This is the return for subsequent calls
return "foo\n" if $ran_once++;
# this is the return of the first call to foo()
return "First time!\n";
}
}
__END__
You can read more on this topic in 'perlsub' in the
"Persistent Private Variables" section.
HTH,
Charles K. Clarkson
--
Head Bottle Washer,
Clarkson Energy Homes, Inc.
Mobile Home Specialists
254 968-8328
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]