我想将此awk输出重定向到文件句柄,但没有运气。
代码:
open INPUT,"awk -F: '{print $1}'/etc/passwd| xargs -n 1 passwd -s | grep user";
while (my $input=<INPUT>)
{
...rest of the code
}
错误:
Use of uninitialized value in concatenation (.) or string at ./test line 12.
readline() on closed filehandle INPUT at ./test line 13.
答案 0 :(得分:4)
显示的错误消息与主题中的问题没有直接关系。
|
来电的最后添加“open
”。$1
这一事实。但是,您的意图是将该逐字传递给awk
。因此,您必须使用$
来逃避Perl端的\$
。/etc/passwd
参数前面缺少一个空格。总结:这应该会更好:
open INPUT,"awk -F: '{print \$1}' /etc/passwd| xargs -n 1 passwd -s | grep user|";
但是,您还应检查错误等。
答案 1 :(得分:0)
您传递的字符串中的$1
似乎使Perl查找您尚未定义的变量$1
。尝试通过在其前面放置$
来转义字符串中的\
。
因为字符串无效,所以它不会打开,然后产生第二个错误。