2012-10-05 10 views
24

यह अपेक्षाकृत सरल होना चाहिए। मैं एक खाली सरणी शुरू करता हूं, एक grep करता हूं और इसमें परिणाम (यदि कोई है) डालता है, और तब जांचें कि यह खाली है या नहीं। इस तरह:पर्ल कैसे जांचें कि सरणी अभी भी खाली है या नहीं?

my @match =(); 
@match = grep /$pattern/, @someOtherArray; 
if (#match is empty#) { 
    #do something! 
} 

ऐसा करने का मानक तरीका क्या है?

+0

आप को परिभाषित करने और एक ही लाइन पर @match प्रारंभ कर सकते हैं - 'मेरी @match = ग्रेप etc.' –

उत्तर

39

आप इन सभी मुहावरों को जांचने के लिए प्रयोग करेंगे कि कोई सरणी खाली है या नहीं।

if ([email protected]) 
if (@match == 0) 
if (scalar @match == 0) 

स्केलर संदर्भ में, एक सरणी का मूल्यांकन तत्वों की संख्या के रूप में किया जाता है।

+0

TMTOWTDI' $ # मैच + 1 == 0' – squiguy

+11

मत भूलना 'जब तक (@match) ' – friedo

+9

[भूल जाएं' जब तक (@match)'] (http://search.cpan.org/perldoc?Perl::Critic:: नीति: : ControlStructures :: ProhibitUnlessBlocks)। (लेकिन यह ठीक है, मेरी राय, आदमी) – mob

1

यदि आप किसी सरणी के बजाय सरणी का उपयोग कर रहे हैं उदा।

$my existing_match = data_layer->find('Sale',{id => $id}); 

ऊपर एक सरणी देता है, तो का उपयोग कहते हैं:

if(scalar(@$existing_match) == 0) 
संबंधित मुद्दे