ファイルを入力として使用し、ファイルの各行を読み取り、ファイルの内容値に基づいて照会を実行し、出力を別のファイルに書き込むスクリプトを作成しようとしています。これまで私が持っているものはうまくいきません。
私は今コードをきれいに見せたり、良いプログラミングルールに従うことに興味がありません。このスクリプトは、数百行の入力ファイルを繰り返すために一度使用され、再び使用されません。
#!/usr/bin/perl
#
$in_file = $ARGV[1];
$out_file = '<my_output>.out';
open(IN, "< $in_file");
while(<IN>)
{
print "input $in_file \n";
find /<directory> -type f -name $_ -print >> $out_file;
}
答え1
#!/usr/bin/env perl
use strict;
use warnings;
use Getopt::Long qw(GetOptions);
GetOptions( 'dir=s' => \my $Flag_Directory ) or exit 1;
die "Usage: $0 [--dir=d] inputfile outputfile\n" if @ARGV < 2;
$Flag_Directory = '/etc/' if !defined $Flag_Directory;
$Flag_Directory = quotemeta($Flag_Directory);
my $output_file = pop @ARGV;
open my $outfh, '>', $output_file
or die "$0: could not write '$output_file': $!\n";
while (readline) {
chomp;
print "input: '$_'\n";
my $filename = quotemeta($_);
print $outfh qx(find $Flag_Directory -type f -name $filename -print);
}
Perlで使用する方がより慣用的ですが、ファイル::検索またはファイル::検索::ルール費用を支払う代わりに。