作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 cygwin
下使用 perl。这就是我想要做的。我想将目录下的所有文件夹列出到一个数组中,然后将它们作为字符串打印出来,这样我就有了以下结果。
让,工作路径是/user/
。
路径内的文件夹是:
/user/A
/user/B
/user/C
我想:
perl foo
/user/A /user/B /user/C
我有以下代码:
my @folderList = `ls /user`;
foreach (@folderList) {
print "$_ ";
}
print "\n";
但是,结果是:
$ perl foo
/user/A
/user/B
/user/C
$
我的问题:
如何删除存储在数组中的每个结果的换行符?我已尝试使用 chop() 删除最后一个字符,但它不起作用。
最佳答案
简单的答案是使用 chomp
这将去除 $string
或 @strings
的换行符。
但是你的实现有一些问题。最重要的是使用像 cat
和 ls
这样的系统命令来做 Perl 已经可以做的事情。您应该尽可能避免使用系统命令,因为它通常较慢(实际上命令通常比 Perl 快,但运行它们的工作开销较慢),不可移植(如果您没有 Cygwin,您的代码将不会'不能在 Windows 上工作),不安全(用户很容易将 shell 代码注入(inject)你认为只是文件名的内容),更难进行错误检查(你需要抓取 STDERR 输出而不是读取 $!
),你永远不知道你得到的是 BSD 还是 GNU 版本(像 find 这样的一个特殊问题)。
而是使用类似 opendir
的函数, readdir
, 和 open
读取文件和目录。
更好的是,使用 Path::Tiny为您处理大多数文件操作的模块。它也负责检查错误,没有 or die $!
到处都是。
use v5.10;
use strict;
use warnings;
use Path::Tiny;
my $dir = path("/user");
for my $subdir ($dir->children) {
say $subdir->absolute;
}
关于perl - 如何在 perl 中删除 ls 后的换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29359509/
我是一名优秀的程序员,十分优秀!