谢谢各位了!求别沉!我在for循环时,不知道怎样表达 对2个文件中“每个元素”进行对比,以前只处理过对某列数据提取。
下面是我尝试的两种方案:但是“@”这个符号报错,怎么用?
#########方案一
open A,"A.txt";
open B,"B.txt";
open E,">E.txt";
@a=<A>;
@b=<B>;
@a=map split @a;
@b=map split @b;
$a=@a;
for (1..$a)
{
if ($a[$_]==$b[$_])
{print E "A";}
else
{print E "B";}
}
###########方案二:"$A"报错,而且并没有输出第三个文件。
open $A, '>A.txt';
open $B, '>B.txt';
while ($m = <$A>) {
$n = <$B>;
chomp $m;
chomp $n;
print X($m,$n), "\n";
}
sub X{
my ($m, $n) = @_;
my $r;
for (0..length($n)) {
$r .= substr($m, $_, 1) eq substr($n, $_, 1)?'A':'B';
}
$r;
}
open(FHA, '<A.txt') or die "can't open A.txt\n";
open(FHB, '<B.txt') or die "can't open B.txt\n";
while (my $m = <FHA>) {
my $n = <FHB>;
chomp $m;
chomp $n;
print X($m,$n), "\n";
}
sub X{
my ($m, $n) = @_;
my ($r) = "";
for (0..length($n)-1) {
$r .= (substr($m, $_, 1) eq substr($n, $_, 1)?'A':'B');
}
return($r);
}
不会删帖子,刚才自己搞出来了!见笑了~~,我是在原来的脚本上改的。如下:会有错,但输出文件正确。
open(FHA, '<A.txt') or die "can't open A.txt\n";
open(FHB, '<B.txt') or die "can't open B.txt\n";
open(OUT,'>E.txt') or die "can't open E.txt\n";
while (my $m = <FHA>) {
my $n = <FHB>;
chomp $m;
chomp $n;
print OUT X($m,$n), "\n";
}
sub X{
my ($m, $n) = @_;
my ($r) = "";
for (0..length($m)-1) {
if ((substr($m, $_, 1) == "0") && (substr($n, $_, 1) == substr($m, $_, 1)))
{
$r .= ".";
}
不会删帖子,刚才自己搞出来了!见笑了~~,我是在原来的脚本上改的。如下:会有错,但输出文件正确。
open(FHA, '<A.txt') or die "can't open A.txt\n";
open(FHB, '<B.txt') or die "can't open B.txt\n";
open(OUT,'>E.txt') or die "can't open E.txt\n";
while (my $m = <FHA>) {
my $n = <FHB>;
chomp $m;
chomp $n;
print OUT X($m,$n), "\n";
}
sub X{
my ($m, $n) = @_;
my ($r) = "";
for (0..length($m)-1) {
if ((substr($m, $_, 1) == "0") && (substr($n, $_, 1) == substr($m, $_, 1)))
{
$r .= ".";
}
不会删帖子,刚才自己搞出来了!见笑了~~,我是在原来的脚本上改的。如下:会有错,但输出文件正确。
open(FHA, '<A.txt') or die "can't open A.txt\n";
open(FHB, '<B.txt') or die "can't open B.txt\n";
open(OUT,'>E.txt') or die "can't open E.txt\n";
while (my $m = <FHA>) {
my $n = <FHB>;
chomp $m;
chomp $n;
print OUT X($m,$n), "\n";
}
sub X{
my ($m, $n) = @_;
my ($r) = "";
for (0..length($m)-1) {
if ((substr($m, $_, 1) == "0") && (substr($n, $_, 1) == substr($m, $_, 1)))
{
$r .= ".";
}
大神我自己弄出来了!不会删帖子,所以再次回复,谢谢解惑!我是在原来脚本基础上改的,给需要的人看吧:open(FHA, '<A.txt') or die "can't open A.txt\n";
open(FHB, '<B.txt') or die "can't open B.txt\n";
open(OUT,'>E.txt') or die "can't open E.txt\n";
while (my $m = <FHA>) {
my $n = <FHB>;
chomp $m;
chomp $n;
print OUT X($m,$n), "\n";
}
sub X{
my ($m, $n) = @_;
my ($r) = "";
for (0..length($m)-1) {
if ((substr($m, $_, 1) == "0") && (substr($n, $_, 1) == substr($m, $_, 1)))
{
$r .= ".";
}