*[Λίστες](../perlfunc-by-category.md)* # any Επιστρέφει αληθές αν το `BLOCK` δίνει αληθές για τουλάχιστον ένα στοιχείο της `LIST`. Η `any` εκτελεί το `BLOCK` μία φορά ανά στοιχείο της `LIST`, ψευδωνυμώντας το [`$_`](../perlvar.md) στο τρέχον στοιχείο, και επιστρέφει αληθή τιμή τη στιγμή που το μπλοκ δίνει αληθές. Αν κανένα στοιχείο δεν κάνει το μπλοκ αληθές — συμπεριλαμβανομένης της περίπτωσης όπου η `LIST` είναι κενή — η `any` επιστρέφει ψευδές. Δεν εκτελεί ποτέ το μπλοκ περισσότερες φορές από όσες χρειάζεται: το πρώτο αληθές αποτέλεσμα αποφασίζει την απάντηση και τα υπόλοιπα στοιχεία δεν εξετάζονται. Η `any` δεν είναι διαθέσιμη χωρίς προϋποθέσεις. Είναι μια βασική δεσμευμένη λέξη υπό feature-gate που εισήχθη στην Perl 5.42· ενεργοποιήστε την με: ```perl use feature 'keyword_any'; ``` Η μακροχρόνια [`List::Util::any`](../../List/Util/any.md), διαθέσιμη τουλάχιστον από την Perl 5.20, υλοποιεί την ίδια σημασιολογία ως υπορουτίνα. Οι δύο είναι εναλλάξιμες για καθημερινό κώδικα — επιλέξτε την βασική δεσμευμένη λέξη όταν θέλετε ελαφρώς μικρότερη επιβάρυνση κλήσης και ένα επιπλέον πλαίσιο στοίβας λιγότερο στα προφίλ, ή την [`List::Util::any`](../../List/Util/any.md) όταν χρειάζεστε επίσης άλλες εξαγωγές της `List::Util` ή πρέπει να υποστηρίξετε Perls παλαιότερες της 5.42. ## Σύνοψη ```perl use feature 'keyword_any'; any BLOCK LIST ``` ## Τι επιστρέφεται Λογική τιμή: αληθή αν κάποια επανάληψη του `BLOCK` έδωσε αληθές, ψευδή διαφορετικά. Η ακριβής μορφή της τιμής αληθές/ψευδές είναι απροσδιόριστη — αντιμετωπίστε την επιστροφή ως λογική, μη βασίζεστε ότι θα λάβετε ειδικά `1` και `""`. Μια κενή `LIST` επιστρέφει ψευδές. Αυτή είναι η μαθηματικά σωστή απάντηση (ο υπαρξιακός ποσοδείκτης πάνω σε κενό πεδίο είναι ψευδής) και ταιριάζει με την [`List::Util::any`](../../List/Util/any.md). ## Καθολική κατάσταση που επηρεάζει - Το [`$_`](../perlvar.md) ψευδωνυμίζεται σε κάθε στοιχείο της `LIST` διαδοχικά ενώ τρέχει το `BLOCK`. Η ψευδωνυμοποίηση είναι του ίδιου είδους που χρησιμοποιούν οι [`map`](map.md) και [`grep`](grep.md): η τροποποίηση του [`$_`](../perlvar.md) μέσα στο μπλοκ τροποποιεί το ίδιο το στοιχείο της λίστας. Χρησιμοποιήστε μια ονομασμένη λεξιλογική μεταβλητή μέσω `my $x = $_` στην πρώτη γραμμή του μπλοκ αν χρειάζεστε ασφαλές αντίγραφο. ## Παραδείγματα Έλεγχος αν κάποια γραμμή σε μια λίστα ταιριάζει σε ένα μοτίβο: ```perl use feature 'keyword_any'; my @lines = ("foo\n", "bar ERROR baz\n", "quux\n"); if (any { /ERROR/ } @lines) { warn "log contains an error line\n"; } ``` Έλεγχος αριθμητικού κατωφλίου: ```perl use feature 'keyword_any'; my @nums = (1, 4, 7, 12, 3); print "over limit\n" if any { $_ > 10 } @nums; # over limit ``` Ανίχνευση σημαίας γραμμής εντολών, χωρίς εισαγωγή αρθρώματος: ```perl use feature 'keyword_any'; if (any { $_ eq '--verbose' } @ARGV) { $verbose = 1; } ``` Η `any` σε ζεύγος με την [`all`](all.md) ως έλεγχος ορθότητας — κάθε εγγραφή έχει `id`, και τουλάχιστον μία είναι σημαδεμένη ως ενεργή: ```perl use feature qw(keyword_any keyword_all); my @records = ( { id => 1, active => 0 }, { id => 2, active => 1 }, ); die "malformed" unless all { defined $_->{id} } @records; die "none active" unless any { $_->{active} } @records; ``` Χρήση της έκδοσης από `List::Util` όταν δεν μπορείτε να εξαρτηθείτε από την Perl 5.42: ```perl use List::Util qw(any); print "found\n" if any { $_ eq 'needle' } @haystack; ``` ## Οριακές περιπτώσεις - **Βραχυκυκλώνει στο πρώτο αληθές αποτέλεσμα.** Οι παρενέργειες στο `BLOCK` τρέχουν μόνο για τα στοιχεία που εξετάστηκαν πριν (και συμπεριλαμβανομένου) το πρώτο αληθές στοιχείο. Μη χρησιμοποιείτε την `any` για να οδηγήσετε βρόχο που πρέπει να αγγίξει κάθε στοιχείο — χρησιμοποιήστε `for` ή [`map`](map.md) γι” αυτό. - **Κενή `LIST` επιστρέφει ψευδές.** Το `any { anything } ()` είναι ψευδές χωρίς να εκτελεστεί ποτέ το μπλοκ. - **Η ψευδωνυμοποίηση του [`$_`](../perlvar.md) είναι πανομοιότυπη με τις [`map`](map.md) και [`grep`](grep.md).** Η εγγραφή στο [`$_`](../perlvar.md) μεταβάλλει το στοιχείο της πηγαίας λίστας. Το ιδίωμα `any { my $x = $_; ... }` καθιστά ρητό το αντίγραφο. - **Η [`return`](return.md) μέσα στο `BLOCK` επιστρέφει από την περικλείουσα υπορουτίνα**, όχι από την `any`. Για να τερματίσετε τη σάρωση νωρίς με συγκεκριμένη τιμή αλήθειας, αφήστε το μπλοκ να αξιολογηθεί σε εκείνη την τιμή — η `any` ήδη βραχυκυκλώνει. - **Βασική δεσμευμένη λέξη έναντι [`List::Util::any`](../../List/Util/any.md).** Και οι δύο υλοποιούν την ίδια σημασιολογία. Η βασική δεσμευμένη λέξη αποφεύγει ένα πλαίσιο κλήσης σε επίπεδο Perl ανά επίκληση της ίδιας της `any`, κάτι που εμφανίζεται σε σφιχτό προφιλάρισμα· το ίδιο το μπλοκ τρέχει ανά στοιχείο και στις δύο περιπτώσεις. Η ανάμιξη και των δύο στο ίδιο αρχείο είναι νόμιμη αλλά συγχέει· διαλέξτε μία ανά αρχείο. - **Προειδοποίηση `experimental::keyword_any`.** Επειδή η δεσμευμένη λέξη εξακολουθεί να σημειώνεται ως πειραματική, η ενεργοποίησή της εκπέμπει προειδοποίηση στην κατηγορία `experimental::keyword_any` κατά την πρώτη χρήση. Αποσιωπήστε την με `no warnings 'experimental::keyword_any';` αφότου αποφασίσετε να εξαρτηθείτε από τη δεσμευμένη λέξη. ## Διαφορές από το upstream Πλήρως συμβατό με το upstream Perl 5.42. ## Δείτε επίσης - [`all`](all.md) — το αντίστοιχο του καθολικού ποσοδείκτη· αληθές αν και μόνο αν το `BLOCK` δίνει αληθές για **κάθε** στοιχείο - [`grep`](grep.md) — συλλέγει κάθε στοιχείο που ταιριάζει· το `scalar grep { ... } @list` έχει την ίδια τιμή αλήθειας με το `any { ... } @list` αλλά εκτελεί το μπλοκ για κάθε στοιχείο - [`List::Util::any`](../../List/Util/any.md) — μορφή υπορουτίνας πριν την 5.42 με πανομοιότυπη σημασιολογία - [`List::Util::first`](../../List/Util/first.md) — επιστρέφει το πρώτο στοιχείο για το οποίο το μπλοκ είναι αληθές, αντί για λογική τιμή· χρησιμοποιήστε την όταν χρειάζεστε το ίδιο το στοιχείο - [`map`](map.md) — ίδιο συμβόλαιο ψευδωνυμοποίησης [`$_`](../perlvar.md), αλλά επισκέπτεται πάντα κάθε στοιχείο και συλλέγει αποτελέσματα