gpt4 book ai didi

linux - 如何让 Perl 遍历目录中的所有文件?

转载 作者:IT王子 更新时间:2023-10-29 00:48:43 26 4
gpt4 key购买 nike

我有一个包含 Perl 脚本

open (FILE, '<', "$ARGV[0]") || die "Unable to open $ARGV[0]\n";

while (defined (my $line = <FILE>)) {
# do stuff
}

close FILE;

我想在目录中的所有 .pp 文件上运行这个脚本,所以我用 Bash 编写了一个包装器脚本

#!/bin/bash
for f in /etc/puppet/nodes/*.pp; do
/etc/puppet/nodes/brackets.pl $f
done

问题

是否可以避免包装器脚本并让 Perl 脚本来代替它?

最佳答案

是的。

for f in ...; 转换为 Perl

  • 对于我的 $f (...) { ... }(在列表的情况下)或
  • while (my $f = ...) { ... }(在迭代器的情况下)。

您使用的 glob 表达式 (/etc/puppet/nodes/*.pp) 可以通过 glob function 在 Perl 中计算: glob '/etc/puppet/nodes/*.pp'

连同一些样式改进:

use strict; use warnings;
use autodie; # automatic error handling

while (defined(my $file = glob '/etc/puppet/nodes/*.pp')) {
open my $fh, "<", $file; # lexical file handles, automatic error handling

while (defined( my $line = <$fh> )) {
do stuff;
}
close $fh;
}

然后:

$ /etc/puppet/nodes/brackets.pl

关于linux - 如何让 Perl 遍历目录中的所有文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18252875/

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