gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 17:05:41 26 4
gpt4 key购买 nike

我试图解决 Schwartz 的“学习 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 的乐趣!

关于perl - 实现一个简单的 tac 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23847389/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com