我有一个perl脚本,我在其中读取给定目录中的文件,然后将这些文件放入一个数组中.然后,我希望能够将这些数组元素移动到perl哈希中,数组元素是哈希值,并自动为每个哈希值分配数字键.
这是代码:
# Open the current users directory and get all the builds. If you can open the dir
# then die.
opendir(D, "$userBuildLocation") || die "Can't opedir $userBuildLocation: $!\n";
# Put build files into an array.
my @builds = readdir(D);
closedir(D);
print join("\n", @builds, "\n");
Run Code Online (Sandbox Code Playgroud)
打印出来:
test.dlp
test1.dlp
Run Code Online (Sandbox Code Playgroud)
我想获取这些值并将它们插入一个看起来像这样的哈希:
my %hash (
1 => test.dlp
2 => test1.dlp
);
Run Code Online (Sandbox Code Playgroud)
我希望编号键根据我在给定目录中找到的文件数量自动递增.
我只是不确定如何将自动递增键设置为散列中每个项目的唯一数值.
我不确定是否理解需要,但这应该做到
my $i = 0;
my %hash = map { ++$i => $_ } @builds;
Run Code Online (Sandbox Code Playgroud)
另一种方法
my $i = 0;
for( @builds ) {
$hash{++$i} = $_;
}
Run Code Online (Sandbox Code Playgroud)
最简单无聊的方式:
my %hash;
for (my $i=0; $i<@builds; ++$i) {
$hash{$i+1} = $builds[$i];
}
Run Code Online (Sandbox Code Playgroud)
或者如果您愿意:
foreach my $i (0 .. $#builds) {
$hash{$i+1} = $builds[$i];
}
Run Code Online (Sandbox Code Playgroud)
我喜欢这种方法:
@hash{1..@builds} = @builds;
Run Code Online (Sandbox Code Playgroud)