King0 has asked for the wisdom of the Perl Monks concerning the following question:
Below is a script I've put together that is supposed to read names from a file and using the system's grep program determine if those names are in a spreadsheet. The script runs the grep program, but receives errors such as: "No such file or directory," in spite of the files existing. My hunch is there is an issue with how my script handles spaces in the arguments - i.e. the names & directories. Anyone know what I've done wrong? Help is appreciated.
#!/usr/bin/perl my $can_list; my $can_archive; if (@ARGV) { $can_list = $ARGV[0]; $can_archive = '\"'.$ARGV[1].'\"'; } else { die "Need both new candidate list and candidate list archive!"; } # Open candidate list open LIST, $can_list or die "Cannot open new candidate list file! $!"; # Open results log open LOG, ">/data/My Documents/candidates_results.log" or die "Could n +ot open candidate search log!"; while (<LIST>) { @results = `grep -i $_ $can_archive`; foreach $result (@results) { print LOG $result . "\n"; } } close LOG; close LIST;
NOTE: the names file looks like:
Jon Doe Jim Jonson Dan Smith
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Executing external program via backquotes
by jwkrahn (Abbot) on Feb 10, 2010 at 22:44 UTC | |
|
Re: Executing external program via backquotes
by 5mi11er (Deacon) on Feb 10, 2010 at 22:09 UTC | |
by King0 (Initiate) on Feb 10, 2010 at 22:35 UTC |