--- Dermot Paikkos <[EMAIL PROTECTED]> wrote:

> Hi Gurus,
> 
> I am trying to get tidy with my scripts and want to
> use Strict

Use lowercase for strict!  Anything else will cause havoc.

> but am having difficulty with return values from
> subroutines.  I have the following snippet:
> 
>   while (defined(my $i =<$fh>)) {

Don't bother with $i... lot neater if you use the
implict $_ - hence your code:

>     chomp($i);
>     my @a = split(/|/,$i);
>     my $last = $a[1];
>     my $first = $a[0];
>     if ( $name =~ /$last/i ) {
>           return($first,$last);
>     }

becomes:

    while (<$fh>) {
         chomp($_);
         my ($first, $last) = split /|/;
         return ($first, $last)
             if $name eq lc $last;
    }

with the following benefits:

1. Shorter/cleaner.
2. Doesn't bother with an needless array
3. lc() and eq is better than using =~ and /i since
   $last might contain a dodgy regex that hacks your
   computer.
4. It looks more Perlish :)

anyway, I haven't tested it so complain if something
doesn't work - it'll be some minor syntax to fix.
You can probably shorten chomp($_) - but strange things
can happen that I'd rather test first.

>  and get the error:
> Global symbol "$last" requires explicit package name at 
> /var/www/perl/reply.pl line 16.
>
> When I later:  print "Hello $first $last\n";

my ($first, $last) = function();

Take care,

Jonathan Paton

__________________________________________________
Do You Yahoo!?
Everything you'll ever need on one web page
from News and Sport to Email and Music Charts
http://uk.my.yahoo.com

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to