帮忙看看错在哪里

帮忙看看错在哪里

    刚开始学perl,不太懂

大家帮忙看看这段代码,为什么输出的少了最开始的两行。

【题】:输入一些行,逆向输出这些行。

#!/usr/bin/perl -w

chomp (@lines<STDIN>);
foreach (@lines)
{   
    $line=pop(@lines);
    print $line."\n";
}
首先,你这样的东西,真的能运行嘛!?
第二,如果我是新手,我不会这样杂乱的写些垃圾。初学,就把格式规范点。

[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/perl

use strict;
use warnings;

print "请输入3行字符:\n";

my @inputs;
my $count = 0;

while( $count < 3 )
{
        my $line = <STDIN>;
        push( @inputs, $line );
        $count ++;
}

print "\n逆序输出:\n";
while( my $output = pop( @inputs) )
{
        print $output;
}

不好意思,我刚开始学几天,我是按照小骆驼书才看到数组,还不懂规范的格式是怎样的。
请看:
#cat perl12
#!/usr/bin/perl -w
chomp (@inputs<STDIN>;
print scalar(@inputs);
print @inputs;

执行它显示输入的行都能正确放到数组inputs中去,我的问题是,使用foreach为什么会少了最开始输入的两行?

foreach (@inputs)
{   
    $line=pop(@inputs);
    print $line."\n";
}
之所以少了几行是因为
pop 的时候数组中的元素数量变化了 而循环的次数是靠数组中元素的个数控制的
所以循环的次数少了 导致了有些没有被输出
改称while就好了


另外有语法错误 LZ自己找找吧

哪有语法错误,没看出来
我用了-w 参数,执行的时候没警告啊


我相信你是写到帖子里时才出错的。。。 因为你看到了结果
@lines = <INPUT> 少了个'='



[Copy to clipboard] [ - ]
CODE:
#!/usr/bin/perl
use strict;
use warnings;
print reverse <>;

还有推荐使用 use warnings而不是-w
这样你可以有选择性的关闭
哦,是没有从电脑上复制到帖子上,是自己手工输进去的,帖子上确实少了个,电脑里没少,要不然早报错了。
看不懂啊