【发布时间】:2017-10-13 17:32:45
【问题描述】:
我正在使用 Perl 打开两个文本文件,处理它们,然后将输出写入另一个文件。
我有一个文件INPUT,每一行都是客户。我会将每一行处理成变量,这些变量将用于替换另一个文件TEMP 中的文本。应将结果写入每个客户的单独文件中,OUTPUT。
我的程序似乎只处理第一个文件。其余文件保持为空,没有输出。
#!/usr/bin/perl -w
if ( $#ARGV < 0) {
print "Usage: proj5.pl <mm/dd/yyyy>\n";
exit;
}
my $date = $ARGV[0];
open(INFO, "p5Customer.txt") or die("Could not open p5Customer.txt file\n");
open(TEMP, "template.txt") or die("Could not open template.txt file\n");
my $directory = "Emails";
mkdir $directory unless(-e $directory);
foreach $info (<INFO>){
($email, $fullname, $title, $payed, $owed) = split /,/, $info;
next if($owed < $payed);
chomp($owed);
$filepath = "$directory/$email";
unless(open OUTPUT, '>>'.$filepath){
die "Unable to create '$filepath'\n";
}
foreach $detail (<TEMP>){
$detail =~ s/EMAIL/$email/g;
$detail =~ s/(NAME|FULLNAME)/$fullname/g;
$detail =~ s/TITLE/$title/g;
$detail =~ s/AMOUNT/$owed/g;
$detail =~ s{DATE}{$date}g;
print OUTPUT $detail;
}
close(OUTPUT);
}
close(INFO);
close(TEMP);
【问题讨论】:
-
总是
use strict,除非你有一个非常充分的理由。