【发布时间】:2017-01-09 11:25:53
【问题描述】:
我有一个 perl 脚本,它运行一个 shell 命令并解析输出,如下所示:
# Using ls -ltr for illustration. Actual command is different.
my $cmd = "ls -ltr 2>&1 | ";
open (CMD, $cmd ) || die "Cant run $cmd";
while (my $line = <CMD>) {
chomp $line;
...
...
}
即使在使用chomp 之后,上述$line 也包含垃圾字符。我已经尝试将输出重定向到文件并从文件中读取,但即使文件中仍然包含垃圾/垃圾字符。
执行上述命令的示例输出:
^[[H^[[Jtotal 12
drwx------ 2 root root 4096 Dec 19 15:30 tad4d
drwx------ 2 root root 4096 Jan 2 15:37 oup
-rw-r--r-- 1 root root 137 Jan 9 06:25 alth.txt
在上面的输出中,在total 12之前,有一些乱码。
- 垃圾字符进入 shell 命令输出的原因可能是什么?
- 如何避免垃圾/垃圾字符?
谢谢
【问题讨论】:
-
需要一个“垃圾”的例子才能回答。
-
添加了示例输出!!
-
^[是转义码。您是否配置了提示,尤其是带有颜色的提示? (echo $PS1应该告诉你) -
^[[H^[[J是垃圾
标签: perl