* Curtis, Jonathan ([EMAIL PROTECTED]) wrote:
> The loop should return a flag ($found =1) and the line number ($eindex) of
> the user's data...
> --
Curtis,
You would probably help yourself a lot if you hunkered down and
used 'use strict;' One of the problems with your code is that
you're using globals ('$ntlogin' and '$eindex'). Use 'my' to
declare your variables and it will help you keep things straight.
Think of the variables in your main program not know anything about
each other except for the arguments that are passed (the subroutines
interface)
my ($found,$eindex) = have_we_met('jcurtis');
NEVER have your subroutines use ANY variables that it doen't have
in its immediate scope. It's just good practice and will help to
you sane (or as sane as possible) :)
Here is your example with 'use strict' and 'my'
#!/usr/bin/perl -w
use strict;
my ($found,$eindex) = have_we_met('jcurtis');
sub have_we_met
{
my ($ntlogin) = @_;
# return if you don't pass a login
return (0) unless $ntlogin;
my $eindex;
open DATA, "data.txt";
my @data = <DATA>;
close DATA;
my $found = 0;
for (my $i = 0; $i <= $#data; $i++) {
my @cheese = split /,/, $data[$i];
if ($cheese[0] eq $ntlogin) {
$found=1;
$eindex=$i;
}
}
return ($found,$eindex);
}
There are much BETTER ways to do this, but I don't want to overwhelm you
with a simplified example when you're the first stop is programming without
globals.
-biz-
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]