我想以这样的方式修复以下代码,以便获得下面给出的所需输出。但是我发现这两个印刷语句不能同时发挥作用。
代码:
our %HASH=(
elem1=>["FD1","FD2",$arr_path[0]],
elem2=>["FD4","FD5",$arr_path[1]],
);
my @arr_path=(
"/abc/def/$HASH{elem1}[0].ctrl",
"/abc/def/$HASH{elem1}[1].ctrl"
);
print "\nPrinting path from HASH :". $HASH{"elem1"}[2];
print "\nPrinting path from arr_path :". $arr_path[0];
print "\n";
获得的输出:
Printing path from HASH :
Printing path from arr_path :/abc/def/FD1.ctrl
期望的输出:
Printing path from HASH :/abc/def/FD1.ctrl
Printing path from arr_path :/abc/def/FD1.ctrl
答案 0 :(得分:1)
你不能让两个变量相互依赖。
你可以做的是:
our %HASH=(
elem1=>["FD1","FD2",],
elem2=>["FD4","FD5",],
);
my @arr_path=(
"/abc/def/$HASH{elem1}[0].ctrl",
"/abc/def/$HASH{elem1}[1].ctrl"
);
$HASH{elem1}[2] = $arr_path[0];
$HASH{elem2}[2] = $arr_path[1];
但这有点令人困惑。
我认为您需要重新考虑数据结构并从一个结构中获取数据,计算所需的相关信息。 (如果性能有问题,请使用memoization。)