我有一个用于创建文件的Perl脚本。
我有一个变量,它包含许多以逗号分隔的文件路径。
path/to/file1,path/to/file2....path/tofileN
根据返回的文件路径数量,我需要创建另一个创建随机字符串的字符串,以匹配每个文件最多N个文件
如果我的第一个字符串变量包含3个文件路径,我需要创建一个像
这样的字符串RandomName1,RandomName2,RandomName3
并将其写入我的输出文件。
如何解析传入的文件路径字符串以确定总共有多少文件路径?
如何编写循环为每个传入文件路径创建文件名,最多N个文件?
答案 0 :(得分:2)
我不太清楚你为什么要把名字列表放到一个单独的字符串中,但是我们走了。
use strict;
use warnings;
sub create_random_name {
# return a random filename
}
my $foo = '/home/foo,/root,/dev/null';
my @filenames;
foreach (split ',', $foo) {
push @filenames, create_random_name();
}
print join ',', @filenames;
__END__
efe277fe7aa54f7231dedef7ac8c1e3a,327f56cff4bd21b03ee3ceaa4280014c,7f1ca3feb3b51f7a9ee84f08b1791785
我们来看看。
create_random_name
。如果没有进一步说明你需要什么,我会把它留在答案之外。split
你的一串路径到一个数组,但由于你不想要它们,我们只循环遍历结果。由于同样的原因,my $bar
中没有foreach
。@filenames
,,
$foo
使{{1}}看起来与我们的起点相同,{{1}}中的列表。答案 1 :(得分:0)
对于1),你可能想要split正如RC所说的那样。对于2),File::Temp应该可以做到。
use File::Temp 'tempfile';
my $orig_path_str = 'path/to/file1,path/to/file2....path/tofileN';
@orig_paths = split(/,/, $orig_path_str);
my @random_paths;
# loops number of times equalling your number of paths
foreach (1..scalar(@orig_paths)) {
my ($fh, $filename) = tempfile();
push(@random_paths, $filename);
}
my $random_path_str = join(',', @random_paths);