Perl Möglichkeit des Durchsuchens 2 arrays in parallel
Ich verwendet
Use List::MoreUtils qw(each_array);
my $it = each_array( @input_dump_arr, @created_dump_arr);
while ( my ($first, $second) = $it->()) {
}
Wäre diese Arbeit in einem Standard-perl-Konfiguration?
Eine breitere Frage, gibt es Richtlinien zum schreiben von "portable" perl-Skripts? Ich bin neu in Perl, nur versuchen, herauszufinden, wenn cpan ist eigentlich Analog wie die boost-Bibliotheken für c++.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie dies nutzen wollen, einfacher rewrite des Moduls
each_arrayref
Funktion.each_array
ist eine überflüssige wrapper für diese Funktion, die verwendet Prototypen zu nehmen Referenzen auf arrays als Parameter übergeben werden.Seine Funktionalität ist identisch mit der Modul-version, außer dass es nicht keine Prüfung der Parameter, die Sie erhält, und der iterator zurückgegeben, nicht überprüfen, dass es entweder keine Parameter oder
'index'
.Ausgabe
Könnte man natürlich auch einfach den code nehmen für
each_arrayref
von derList::MoreUtils
Modul. Es ist ein geschlossenes System und garantiert die Kompatibilität mit Ihren bestehenden code.Es ist nicht eine core-Modul (also nicht im Bundle mit perl), aber es ist eine relativ Häufig ein. Ich würde nicht zögern, es zu benutzen.
Wenn Sie wirklich paranoid es nicht verfügbar sein könnte, vorausgesetzt, arrays sind gleiche Größe, können Sie etwas wie das folgende:
Jedoch glücklicherweise each_array() ist implementiert in pure perl, so können Sie auch das anzeigen der Quelle der Liste/MoreUtils.Uhr und kopieren Sie und fügen Sie die entsprechenden Unterprogramme.
Gibt es Module verteilt, die direkt mit Perl selbst. Sie sind in der Regel als "core-Module". Können Sie immer verwenden Sie diese.
List::Util
ist einer von Ihnen, obwohlList::MoreUtils
nicht.Jedoch
List::MoreUtils
ist ein Modul zur Verfügung, auf CPAN. CPAN wird oft als "Perl-standard-Bibliothek", ähnlich wie "der Standard-Bibliothek" ist für C++. Die meisten Leute denken, es ist OK, dass Benutzer Ihrer Anwendung zu haben, bestimmte Module aus dem CPAN installiert, vor allem, wenn Sie gut eingesetzt-Module.List::MoreUtils
ist definitiv ein gut-gebraucht-Modul. Es ist schon seit geraumer Zeit. Alle großen Linux-Distributionen, die ich kenne, enthalten verpackte Versionen.Also, wenn Ihr Ziel ist nicht zu 100% unabhängig von nicht-core-Module, dann empfehle ich dringend, dass Sie weiterhin mit
List::MoreUtils
und die meisten anderen edlen Modulen auf CPAN. Sie sind, warum Perl Felsen.Leicht offtopic: ich muss zugeben, dass ich lieber
pairwise
(auch ausList::MoreUtils
) für genau zwei arrays, da verhält es sich eher wiemap
. Für dein Beispiel:List::MoreUtils
Sie können nur noch kopieren Sie die Teile, die Sie mögen in Ihre Anwendung.