in reply to Re: Search for text from user input
in thread Search for text from user input

The "Perl Script for searching an Image" node and this one are not related. This one was for a friend.

Thanks for everyone's help. I have managed to add a few more lines so that i can specify the directory as well. My code is below:

#!/usr/bin/perl use strict; use warnings; print "Please enter text for string search: "; my $search=<STDIN>; chomp $search; print "Please specific a directory: "; my $directory=<STDIN>; chomp $directory; opendir(DIR, $directory) or die "Cannot open dir ($!)\n"; while (my $file = readdir(DIR)) { print "$file\n" if ( $file =~ /$search\.jpg|$search\.jpeg/i ); } closedir(DIR); exit 0;

Replies are listed 'Best First'.
Re^3: Search for text from user input
by Marshall (Canon) on May 13, 2010 at 16:47 UTC
    Ok.
    I think what you have is a bit complex. Consider the below... The two regex terms in the "grep{}" can be combined. I show a simple formulation without doing that. If you have just a few hundred files, tweaking this further won't make any performance difference at all. Clarity is often a lot more important than getting the nth degree of performance.
    #!/usr/bin/perl use strict; use warnings; print "Please enter text for string search: "; my $search=<STDIN>; chomp $search; print "Please specific a directory: "; my $directory=<STDIN>; chomp $directory; opendir(DIR, $directory) or die "Cannot open directory: $directory \n"; my @files = grep{ m/$search\.jpg$/i or m/$search\.jpeg$/i }readdir (DIR); print "No files found in $directory\n" unless @files; foreach my $file (@files) { print "$directory/$file\n"; }
    Oops: if $search is a regex, you will need \Q$search\E