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:glob’/etc/puppet/nodes/*.pp’在Perl中进行评估.
加上一些风格改进:
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。