Ich habe ein Array und versuchte, den Array-Inhalt in einen Hash mit Schlüsseln und Werten zu konvertieren. Index 0 ist ein Schlüssel, Index 1 ist ein Wert, Index 2 ist ein Schlüssel, Index 3 ist ein Wert usw.Wie konvertiere ich ein Array zu einem Hash in Perl?
Aber es produziert nicht das erwartete Ergebnis. Der Code ist unten:
open (FILE, "message.xml") || die "Cannot open\n";
$var = <FILE>;
while ($var ne "")
{
chomp ($var);
@temp = split (/[\s\t]\s*/,$var);
push(@array,@temp);
$var = <FILE>;
}
$i = 0;
$num = @array;
while ($i < $num)
{
if (($array[$i] =~ /^\w+/i) || ($array[$i] =~ /\d+/))
{
# print "Matched\n";
# print "\t$array[$i]\n";
push (@new, $array[$i]);
}
$i ++;
}
print "@new\n";
use Tie::IxHash;
tie %hash, "Tie::IxHash";
%hash = map {split ' ', $_, 2} @new;
while ((my $k, my $v) = each %hash)
{
print "\t $k => $v\n";
}
die Ausgabe nicht korrekt hergestellt:
name Protocol_discriminator attribute Mandatory type nibble value 7 min 0 max F name Security_header attribute Mandatory type nibble value 778 min 0X00 max 9940486857
name => Security_header
attribute => Mandatory
type => nibble
value => 778
min => 0X00
max => 9940486857
Im Ausgabe man sehen kann, dass der Hash nur mit einem Teil, und ein anderer Teil der Anordnung nicht gebildet ist, im Hash erstellt werden.
Kann jemand helfen?
die Daten in @array Angenommen wird als Schlüssel gespeichert, den Wert, Schlüssel, Wert usw. – Hawk
@Hawk und seine Wähler: Bitte nehmen Sie sich Zeit, um die Frage zu lesen. OP sagt dies bereits in seiner/ihrer Frage an. – m0skit0
Dank @Hawk, eine sehr nützliche Notiz für diejenigen von uns, die nur den Titel lesen und sofort zu den Antworten springen;) – rustyx