James Edward Gray II 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 { }
INIT{} won't do it.
> block at the beginning of the sub, would that do it? Are there other
> ways? Thanks.
yes. maintaining a variable to keep track of how many times the sub has been
called like the others have suggested is one way. another way which does
not require you to maintain a variable and allows you to cleanly separate
the code for the first call and the second call with typeglob is also
possible:
#!/usr/bin/perl
use strict;
use warnings;
no warnings 'redefine'; #-- because you know what you are doing, right?
sub first{
print "first called\n";
#--
#-- your code here when it's first called
#--
*first = \&second;
}
sub second{
print "second called\n";
#--
#-- your code here when it's called for the second time
#--
#--
#-- notice you can cleanly separate the code from 'first()'
#--
}
first;
first;
__END__
prints:
first called
second called
david
--
$_=q,015001450154015401570040016701570162015401440041,,*,=*|=*_,split+local$";
map{~$_&1&&{$,<<=1,[EMAIL PROTECTED]||3])=>~}}0..s~.~~g-1;*_=*#,
goto=>print+eval
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]