Shiping Wang wrote: > Hello, Hello,
> I try to use following code to check if a file is already exist, > if it exists, then ask user to change file name or override it. I know > using 'goto' is not preferred way here, but what's the 'right way' to do > so? > > ------------------------------------------------------------------------------------------------------------------------------------------- > > my $file = "sumpower\.txt"; > > if (-e $file ){ > warn "The summary file already exist! Wold you like to give > another name? (y/n)\n". > "If your answer is 'n' then the file will be overrided. > What's your decision?\n"; > STARTOVER: > my $answer = <STDIN>; > if ($answer =~ /y/i){ > print "What's the new file name?\n"; > $file = <STDIN>; > }elsif ($answer =~ /n/i){ > unlink $file; > }else { > print "You have given a invalid answer, try again > (y/n)\n"; > goto STARTOVER; > } > } > > open(OUT, "> $file") or die "Cannot open $file - $!"; How about this: my $file = 'sumpower.txt'; STARTOVER: while ( -e $file ) { warn "The summary file already exists! ", "Would you like to give it another name? (y/n)\n", "If your answer is 'n' then the file will be overwritten. ", "What's your decision?\n"; ANSWER: { my $answer = <STDIN>; if ( $answer =~ /^y/i ) { print "What's the new file name?\n"; chomp( $file = <STDIN> ); next STARTOVER; } elsif ( $answer =~ /^n/i ) { # unlink not required as open will overwrite the file. last STARTOVER; } else { print "You have given a invalid answer, try again (y/n)\n"; redo ANSWER; } } } open OUT, '>', $file or die "Cannot open $file - $!"; John -- Perl isn't a toolbox, but a small machine shop where you can special-order certain sorts of tools at low cost and in short order. -- Larry Wall -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>