You are absolutely correct, that the my is included inside the { } block. But that is
exactly where the confusion sets in, having had this problem when I started coding in
perl. The { } are required when using an if/else construct -- part of the syntax to
perform this function. Whereas a block is *optional*, like in C/C++.
So yes, technically, any code inside a { } will be a block and the 'my' looses scope.
But I totally understand the original poster's confusion!
-JW
James Edward Gray II <[EMAIL PROTECTED]> wrote:
On Apr 27, 2004, at 5:39 AM, mike wrote:
> I am getting a bit confused here, if I uncomment out the print
> statement
> within the if block $date1 prints, however the $date1 after the if
> block
> doesn't
>
> if ($date eq ''){
> my $date1=localtime;
> #print $date1;
> }
> else {
> my $date1=~$date;
> };
> print $date1;
>
> any ideas
my(...) scopes a variable locally, which usually means it ceases to
exist at the next }, or end of the block. If you need the same
variable through and outside a block, you have to declare it outside:
my $date1;
if ($date eq '') { $date1 = localtime; }
else { $date1 = $date; } # not what you had, but I bet it's what you
meant
print "$date1\n";
While we're talking, you should look into adding the following two
lines to the top of all your code:
use strict;
use warnings;
This would have kept the code you posted from compiling and it would
have told you why. Build good habits.
Good luck.
James
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------
Do you Yahoo!?
Win a $20,000 Career Makeover at Yahoo! HotJobs