加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 实现一个简单的tac程序

发布时间:2020-12-16 06:19:12 所属栏目:大数据 来源:网络整理
导读:当我在编写的代码中发生意外输出时,我试图解决施瓦茨的“学习Perl”练习.我想知道我做错了什么. Qn:实现一个与unix实用程序类似的简单tac. 我的解决方案 #!/usr/bin/perluse strict;use warnings;my @array;while () { push @array,$_;}foreach ($#array..0
当我在编写的代码中发生意外输出时,我试图解决施瓦茨的“学习Perl”练习.我想知道我做错了什么.

Qn:实现一个与unix实用程序类似的简单tac.

我的解决方案

#!/usr/bin/perl
use strict;
use warnings;

my @array;
while (<>) {
    push @array,$_;
}

foreach ($#array..0) {
    print $array[$_];
}

使用:$./tac list实现它

列表包含:

$cat list 
An apple 
Blue boys
Coy cows
Dreary ducks!

没有输出.

$./tac list
$

解决方法

你的问题是foreach循环计数器.你不能这样倒退.

你可以这样做:

while (@array) {
    print pop @array;
}

要不就:

print pop @array while (@array);

while(@array)将在标量上下文中评估@array,这意味着将测试数组的大小.当大小达到零时,循环将终止.

由于这是perl,当然有一百万种方法可以做到这一点.另一个是:

print for reverse @array

…或者您可以使用unshift向后读取数组:

#!/usr/bin/perl
use strict;
use warnings;

my @array;
while (<>) {
    unshift @array,$_;
}

print for @array;

……或者你甚至可以这样做:

#!/usr/bin/perl
use strict;
use warnings;

print reverse <>;

享受学习Perl!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读