【发布时间】:2014-04-12 11:52:05
【问题描述】:
我有一个简单的问题,希望你们能帮助阐明一下。我正在稳步学习 perl。
假设我有一个非常大的字符串,例如输出:
our $z = `du -B MB /home`
这将产生如下字符串:
1MB /home/debug/Music
1MB /home/debug/Downloads
20MB /home/debug
20MB /home/
我想知道的是,如何将此字符串加载到具有两列和 n 行的数组中(其中 n 是 du 输出中的行数)?
我正在尝试类似以下内容:
my $z1 = `du -B MB /home | tail -4`;
my @c0 = split (/n/, $z1);
my $z2 = join (/\t/, @c0);
my @c2=split(/\t/, $z2);
print @c2;
产生以下输出:
1MB/home/debug/Music1MB/home/debug/Downloads20MB/home/debug20MB/home
我想我可以使用替换函数 s///g 将目录替换为空值,并将空格值设置为一个数组,并将空格值设置为空并将其设置为第二个数组,并且可以设置 1数组作为另一个键。
是否有人对解决此问题的最佳方法有任何建议?
感谢任何帮助。
谢谢,
迭戈
【问题讨论】:
-
第一个
split应该是用z1作为第二个参数吧? -
该死的谢谢dirk,这就是我从我的shell历史中复制得到的:s