The main reason is that it will catch errors in your code that vanilla
Perl will not.  As an example, if you accidentally add a typo into one
of your variables, Perl won't care.  It will just create the variable on
the fly and assume you know what you're doing.  Especially with larger
projects, this can mean hours of scouring your code wondering why it
doesn't "work", or why a variable doesn't have the expected value.
Similarly, if you have a program wherein you define a variable $element
for your loop ala 'foreach my $element(sort @array){', it avoids
problems with uninitialized variables giving you unexpected data.

Can you live without it?  Sure.  But the end result is by not letting
you take shortcuts or write ambiguous code it will make your turnaround
time faster and your troubleshooting easier.


-----Original Message-----
From: Bryan Harris [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, February 22, 2006 6:47 PM
To: Beginners Perl
Subject: Re: simple references question



Thanks!

Regarding your "note", out of curiosity, how will it help a lot in the
end?
I've been scripting for almost 5 years now, and have produced >100
scripts
that are used in data analysis work by ~15 people, and have never used
"use
strict", nor declared any variables with "my".  Everybody says it's good
coding practice, but I haven't yet figured out why...  Just wondering.

Thanks again for your response.

- Bryan



> Here's one way, but if you create @f like you want to, then you will
end
> up working with a copy of your array instead of the original array
> passed.  That may or may not be what you want to do.
> 
> If you want to alter the contents of the original array, you will have
> to use $f and dereference it.  When working with the reference, if you
> need an array (when using sort() for example), use @{$f} or @$f.  When
> you want to access an element of the array, use $f->[element].
> 
> NOTE:  Always use strict and warnings.  It's much better to start now
> than to have to change your habits later.  It's like learning to type;
> at first it makes things slower, but in the end it will help a lot.
> 
> 
> ##################################
> 
> use strict;
> use warnings;
> 
> my @a = (1,2,3,4);
> my $b = 10;
> my $c = 5;
> 
> d($b,[EMAIL PROTECTED],$c);
> 
> sub d {
>    my $e = shift;
>    my @f = @{shift()};
>    my $g = shift;
> 
>    print $f[2], "\n";
> }
> 
> ###################################
> 
> 
> 
> 
> -----Original Message-----
> From: Bryan R Harris [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, February 22, 2006 12:39 PM
> To: Beginners Perl
> Subject: simple references question
> 
> 
> 
> I'm trying to pass an array to a subroutine.  I'd like the subroutine
to
> create "@f" from the "[EMAIL PROTECTED]" that I send it, but I can't seem to 
> figure
> out
> the syntax.  Is there a way to replace my "???f???" with something to
> make
> it work?
> 
> **************************************
> 
> @a = (1,2,3,4);
> $b = 10;
> $c = 5;
> 
> d($b,[EMAIL PROTECTED],$c);
> 
> sub d {
>    ($e,  ???f???  ,$g) = @_;
>    print $f[2], "\n";
> }
> 
> **************************************
> 
> 
> TIA.
> 
> - Bryan
> 
> 



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>




--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to