С технической точки зрения, в Perl нет многомерных массивов, но вы можете использовать одномерные массивы в Perl, чтобы действовать так, как если бы они имели более одного измерения.В Perl, как я могу укрепить двумерный массив?
В Perl каждый элемент массива может быть ссылкой на другой массив, но синтаксически они будут выглядеть как двумерный массив.
Я хочу преобразовать 2-мерный целочисленный массив в строку в Perl. Я объявил 2-мерный целочисленный массив следующим образом:
my @array1=[[1,2,3],[1,2,3],[1,2,3]];
ИЛИ
my @array2=((1,2,3),(1,2,3),(1,2,3));
теперь мне нужно создать подпрограмму, которая будет возвращать строку как "{{1,2,3},{1,2,3},{1,2,3}}"
. Я попробовал следующую подпрограмму:
sub TwoDArrayOutputString {
my ($outputs)= @_;
my $finaloutput="{";
foreach my $output ($outputs) {
foreach my $out (@$output) {
$finaloutput.="{"."}";
#$finaloutput.="{".join(',',@output)."}";
}
$finaloutput.=",";
}
$finaloutput.="}";
return $finaloutput;
}
sub TwoDArrayOutputString1 {
my ($outputs)= @_;
if (ref($outputs) eq "REF") {$outputs = ${$outputs};}
my $finaloutput="{";
foreach my $output ($outputs) {
foreach my $out (@$output) {
$finaloutput.="{"."}";
#$finaloutput.="{".join(',',@output)."}";
}
$finaloutput.=",";
}
$finaloutput.="}";
return $finaloutput;
}
sub TwoDArrayOutputString2{
my ($array)= @_;
my $finaloutput="{";
for my $row (0..$#array) {
my @columns = @{ $array[$row] }; # Dereferencing my array reference
$finaloutput.="{";
for my $column (@columns) {
$finaloutput.=$column.",";
}
$finaloutput=substr($finaloutput,0,length($finaloutput)-1);
$finaloutput.="}".",";
}
$finaloutput=substr($finaloutput,0,length($finaloutput)-1);
$finaloutput.="}";
return $finaloutput;
}
print TwoDArrayOutputString(@array1)."\n";
print TwoDArrayOutputString1(@array1)."\n";
print TwoDArrayOutputString2(@array1)."\n"."\n"."\n"."\n";
print TwoDArrayOutputString(@array2)."\n";
print TwoDArrayOutputString1(@array2)."\n";
print TwoDArrayOutputString2(@array2)."\n"."\n"."\n"."\n";
Выход:
{{}{}{},}
{{}{}{},}
}
{,}
{,}
}
и мой ожидаемый выход {{1,2,3},{1,2,3},{1,2,3}}
.
Да. вы правы @chankey. Можете ли вы проанализировать этот код-aub TwoDArrayOutputString2 { \t my ($ array1) = @_; \t my $ finaloutput = "{"; foreach my $ aref (@ array1) { foreach my $ inner (@ $ aref) { $ finaloutput. = "{"; foreach my $ elem (@ $ inner) { $ finaloutput. = $ Elem. ","; } $ finaloutput. = "}". ","; } } return $ finaloutput; } my @ array1 = [[1,2,3], [1,2,3], [1,2,3]]; print TwoDArrayOutputString2 (\ @ array1); ' –