ของ ค่าที่ต้องการ จากใน array 3 มิติ ยังไง (perl)
ก็เลย เขียน (มั่วๆ) มา ..
(ไม่ได้เขียนเป็น ฟังชั่น นะ)
ดังนั้น เอาไป พลิกแพลงเอาโลด
แบบ array ปกติๆ
#!/usr/bin/perl use Data::Dumper; my $search = 'four'; my @array = ( [1, 2, 3, 'four'], ['one', 'two', 'three', 4] ); foreach my $index_a (0..$#array){ foreach my $index_b (@{$array[$index_a]}){ if($array[$index_a][$index_b] eq $search){ print "$search = \$hash[$index_a][$index_b]\n"; exit; } } }
แบบ แปลง %hash มารับค่า (ทำ ทำไม ?)
#!/usr/bin/perl use Data::Dumper; my %hash; my $search = 'four'; my @array = ( [1, 2, 3, 'four'], ['one', 'two', 'three', 4] ); foreach my $i (0..$#array){ @hash{$i} = $array[$i]; } foreach my $index_a(keys %hash){ my $i = 0; foreach my $index_b(@{$hash{$index_a}}){ if($index_b eq $search){ print "index = \$hash[$index_a][$i] = $index_b\n"; exit; } $i++; } }
unknown@PiratePeer~/Desktop# ./test.pl index = $hash[0][3] = four
เสริม หาก จะเช็ค ว่า ค่านี้ เป็น array หรือไม่
ให้ใช้ ref($) เอา
# Is there an isArray() in Perl? --> http://www.perlmonks.org/?node_id=118961 foreach $item (@array){ if(ref($item) eq 'ARRAY'){ #It's an array reference... #you can read it with $item->[1] #or dereference it uisng @newarray = @{$item} }else{ #not an array in any way... } }
No comments:
Post a Comment