At the bottom is a version that works. I found two bugs.
The first is that you complain about "name not found" inside
the while loop. This means that you complain if the name
doesn't happen to be the first one on the list. Moving
the complaint outside of the while loop causes it to only
fire off if _none_ of the names match, which is presumably
what you want.
The second bug is in the regexp. The backslash messes it
up. I would have expected it to match the literal string
"$name", but it doesn't seem to. Without the backslash, it
matches on a line containing exactly the value of the
$name variable.
#!/usr/bin/perl -w
use strict;
open (FILE, "users.txt") or die "File not found\n";
my $name = '';
my $yn = '';
print "Enter your name--> ";
chomp ($name = <STDIN>);
my $nameWasFound = 0;
while (<FILE>) {
if (/^$name$/i) {
print "Your name was already found\n";
$nameWasFound = 1;
last;
}
}
if(!$nameWasFound){
print "Name not found. Would you like to add it? (y/n)--> ";
chomp ($yn = <STDIN>);
if ($yn eq 'y') {
close FILE;
open (OUTPUT, ">>users.txt");
print OUTPUT "$name\n";
close OUTPUT; ;
}
else {
print "FINE!\n"; ;
}
}
print "end.\n";