Can someone tell me what is going wrong with my conditional hook tests as marked below?

#!/usr/bin/perl -w
use warnings;
#this program's specification is on page 167
#in the Llama book under exercise 1
my ($source, $go, $dest, $expression, $over);
print"\$over = 1" if($ARGV[0] eq "-o");
until($go){
   print "Please enter a source filename: ";
   chomp ($source = <STDIN>);
   $go = ($over ? 1 : &filep($source, 0));#              Here
}
$go = 0;
until($go){
   print "\nPlease enter a destination filename: ";
   chomp ($dest = <STDIN>);
   $go = ($over ? 1 : &filep($dest, 1));#               And here
}
die "ERROR: Cannot read and write to same file.\n" if($source eq $dest);
if(!$over){
   print "\n\t",'*' x 20,"\n\Uwarning this will overwrite your destination\E".
   " \Ufile\E\n\t",'*' x 20,"\nWould you like to continue?(y/n)\n";
   chomp($_ = <STDIN>);
   die "This program has terminated by user command\n" if(/n/);
}
print"\nThis program will now accept a single Regular Expression".
   " this expression, if entered correctly will copy all matching".
   " data from $source to $dest.\nPlease enter a valid Perl style".
   " regular expression:\n(default method = \"case-insensitive\"".
   " with delimiter ommission and \\1 being entire match)\n";
chomp($expression = <STDIN>);
open INFILE, "<$source" or die "Unable to open $source for read: $!";
open OUTFILE, ">$dest" or die "Unable to open $dest for write: $!";
while (<INFILE>){
   if(/($expression)/i){
   print OUTFILE "$_\n";
   }
}
close INFILE, OUTFILE;
print "\nDone.\n";

sub filep{
   my($sname, $optype) = @_;
   my $error_count;
   if (!(-e $sname)){
   print "$sname does not exist\n";
   $error_count++;
   }elsif(!(-s _)){
   print "$sname has no size\n";
   $error_count++;
   }elsif(!(-r _)){
   print "You lack read permmission for $sname\n";
   $error_count++;
   }
   if($optype == 1){
   if(!(-w _)){
       print "You lack write permission for $sname\n";
       $error_count++;
   }
   }
   if($error_count == 0){
   1;
   }else{
   0;
   }
}

Whenever I run this with a '-o' on the command line of the program the hook test 
(above) don't seem to run correctly (ie. run the subroutine when I don't want to). I 
would appreciate any help I can get.
PS: I included the complete source for easy debugging. Sorry about the size of this 
message.

__________________________________________________________________
The NEW Netscape 7.0 browser is now available. Upgrade now! 
http://channels.netscape.com/ns/browsers/download.jsp 

Get your own FREE, personal Netscape Mail account today at http://webmail.netscape.com/

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

Reply via email to