2010-12-31 10 views
0

Ähnlich wie meine frühere Frage, aber dieses Mal möchte ich wissen, ob irgendwelche Ganzzahlen in einer Liste von Ganzzahlen in einem Array sind.Perl: Wie überprüft man, ob ganze Zahlen in einer Liste von Ganzzahlen in einem Array sind

Zum Beispiel, wenn ich habe:

@int_array = (7,101,80,22,42); 

Wie kann ich überprüfen, ob der Integer-Wert 80 oder 77 oder 99 in dem Array ist? Gibt es einen besseren Weg als nur ein separates Smartmatch für jede ganze Zahl in der Liste zu machen? Ich benutze Perl 5.10.1

Antwort

2
#!/usr/bin/env perl 
use warnings; 
use 5.012; 

my @array = (7,101,80,22,42); 
my @items = (77,81,99); 
my $it = join '|', @items; 
my $re = qr/^(?:$it)\z/; 
say $re ~~ @array ? 'OK' : 'Not OK'; 
+1

Ich kenne TMTOWTDI aber lieber Gott, Ewwww. – ijw

1

Sie können das Array in einen Hash verwandeln, so dass Sie nicht jedes Mal, wenn Sie etwas suchen möchten, die gesamte Liste durchsuchen müssen.

0

Die einfachste Möglichkeit besteht darin, das int-Array in einen Hash zu verwandeln, wobei int der Schlüssel und der Wert ist. Dann sind Sie es bis direkt mit if (exists($intHash{$iVal))

0

gibt es auch die 'grep' Methode

if (grep/$ num /, @array) {drucken "yerp! \ n"; }

+0

Oder besser: 'if (grep {$ _ == $ num} @array) {print" yurp! \ N "; } ' – reinierpost

Verwandte Themen