Good advice, Hans and Timothy, I'll try to start using it.

One quick follow-on question (I promise only one!):

You mention larger projects, and I've heard about "reusable code"...  Is
that generally done by copy/paste into the script you're working on?  Or is
there a way to somehow "compile" like C does where it will gather chunks
from a library and stuff them together into a single script?  I ask because
portability is huge for me, I have to produce single standalone scripts that
work on any of various unices.

Thanks!

- B



> 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>


Reply via email to