Christopher Spears wrote: > I've been reading the Intermediate Perl book and am > trying to solve one of the exercises. I wrote a > script that takes input from the keyboard and uses the > input as a regular expression to search for files in a > directory. If the script finds a match, the filename > is printed out. > > #!/usr/bin/perl -w > use strict; > > print "Enter a regular expression: "; > chomp(my $pattern = <STDIN>); > > my $some_dir = "./ex2"; > opendir(DIR, $some_dir) || die "Can't open $some_dir: > $!"; > my @filenames = readdir(DIR); > > foreach (@filenames) { > if (eval {$_ =~ /$pattern/} ) { > print $_ . "\n"; > } > print "Continuing after error: $@" if $@; > } > > I want the program to keep asking the user for a > pattern until an empty string is entered. I > remembered how to do this once, but I am returning to > Perl after learning another language. I need to jog > my memory!
One way to do it: { # begin loop print "Enter a regular expression: "; chomp(my $pattern = <STDIN>); last if $pattern eq ''; my $some_dir = './ex2'; opendir DIR, $some_dir or die "Can't open $some_dir: $!"; my @filenames = readdir DIR; foreach ( @filenames ) { if ( eval { $_ =~ /$pattern/ } ) { print "$_\n"; } print "Continuing after error: $@" if $@; } redo; } John -- use Perl; program fulfillment -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] <http://learn.perl.org/> <http://learn.perl.org/first-response>