Perl打开文件,但不';我看不懂内容

Perl打开文件,但不';我看不懂内容,perl,greatest-common-divisor,Perl,Greatest Common Divisor,我的Perl程序似乎成功地打开了我希望它读取的文本文件,但它没有在代码中使用文本文件中的信息 #/usr/bin/perl 严格使用; 使用警告; 次级gcd_iter(美元){ 我的($u,$v)=@; 而(五元){ ($u,$v)=($v,$u%$v); } 返回资产负债表(美元); } 我的$gcdcount=0; my$filename=“Integers1.txt”; 列表上下文中的open(my$fh,“读取文件的其余部分,并对每行计算一个标量 这意味着my@integers=;在第

我的Perl程序似乎成功地打开了我希望它读取的文本文件,但它没有在代码中使用文本文件中的信息

#/usr/bin/perl
严格使用;
使用警告;
次级gcd_iter(美元){
我的($u,$v)=@;
而(五元){
($u,$v)=($v,$u%$v);
}
返回资产负债表(美元);
}
我的$gcdcount=0;
my$filename=“Integers1.txt”;
列表上下文中的open(my$fh,“
读取文件的其余部分,并对每行计算一个标量

这意味着
my@integers=;
在第一次计算文件时读取其剩余部分。第二次循环时,没有任何内容可读取

替换

while (my @integers = <$fh>) {
while(my@integers=){

chomp(my@integers=);
while(@整数){

!/usr/bin/perl
严格使用;
使用警告;
次级gcd_iter(美元){
我的($u,$v)=@;
而(五元){
($u,$v)=($v,$u%$v);
}
返回资产负债表(美元);
}
我的$gcdcount=0;
my$filename=“Integers1.txt”;

打开(my$fh),“您能回答问题以显示
Integers1.txt
格式的示例吗?”程序没有打印成对数组或正确的gcdcount”这可能是因为您的代码中没有
print
语句。@Borodin,我意识到了这一点,为了清晰起见,我对其进行了编辑。print gcdcount包含在我稍后在文章中添加的最小示例中。您会问为什么您的代码不打印pair数组,而您编辑了
print
调用以“清晰”?我不能说我理解你的想法。请在你编写的每个Perl程序的顶部添加
使用strict
使用warnings'all'
,并修复由此产生的错误,特别是在请求全世界帮助你编写代码之前。输出结果与你的建议相同。我目前正在使用草莓Perl。梅这可能是编译器的问题…?@Kokio,你的程序和我的更改输出是
3
,而不是
0
。希望在注释中允许图像共享,这里是我的代码:一个编译器给我一个0的输出,而另一个编译器给我一个空行。我假设我在代码中以某种方式错误地解释了你的更改,我'我想知道我哪里出错了。这不是您发布的代码。您删除了
或死了
。请重新添加该代码并重新运行。添加并重新运行。输出不会更改。
chomp( my @integers = <$fh> );
while (@integers) {
#!/usr/bin/perl
use strict;
use warnings;
sub gcd_iter($$) {
    my ($u, $v) = @_;
    while ($v) {
    ($u, $v) = ($v, $u % $v);
    }
return abs($u);
}
my $gcdcount = 0;
my $filename = "Integers1.txt";
open (my $fh, "<", $filename) or die("Can't open file $filename, $!");
chomp( my @integers = <$fh> );
while (@integers) {
    my $value1 = shift(@integers);
    my $value2 = shift(@integers);
    my @trngpair = ($value1, $value2);
    if (gcd_iter($value1,$value2)==1) {
    $gcdcount++;
    }
}
print "$gcdcount\n";
close $fh;