2012-05-18 8 views
10

निम्न कोड में:@ जो भी नहीं पहुंच रहा है :: जो भी खाली सरणी के बजाय कम से कम एक चेतावनी उत्पन्न करता है?

use strict; 
use warnings; 
use Data::Dumper; 

my %hash = %Whatever::whatever; 
my @array = @Whatever::whatever; 
print Dumper \@array; 
print Dumper \%hash; 

मेरे समझ के साथ कि @Whatever :: जो कुछ भी प्रतीक मेज तक पहुँच रहा है, और एक त्रुटि संदेश का उत्पादन नहीं करता क्योंकि प्रतीक तालिका एक हैश है। लेकिन गैर-मौजूदा तत्व तक पहुंचने के लिए कम से कम एक चेतावनी संदेश क्यों नहीं है?

+0

दिलचस्प: 'my @array = @ जो भी हो; 'निश्चित रूप से एक त्रुटि उत्पन्न करता है। –

+2

मैं इसके बजाय कहूंगा कि 'जो भी :: जो कुछ भी' जो भी 'पैकेज में' जो कुछ भी 'नामक गतिशील रूप से स्कॉप्ड सरणी की पहचान करता है, उसके बजाय यह * * प्रतीक तालिका तक पहुंच रहा है ... [कुछ हद तक] हैश "* इस तरह के योग्य पहचानकर्ताओं ने हमेशा 'सख्त' से बचा है। – pilcrow

+0

@pilcrow धन्यवाद। क्या आप इसे उत्तर के रूप में रख सकते हैं? –

उत्तर

1

(अनुकूल/एक टिप्पणी से पलायन)

मैं बजाय कहूँगा कि @Whatever::whateverWhatever पैकेज में @whatever नाम के एक गतिशील scoped सरणी की पहचान करता है, बजाय कि यह "प्रतीक मेज तक पहुँचने है ... [ कुछ हद तक] एक हैश। "

इस तरह के योग्य पहचानकर्ताओं ने हमेशा सख्तताओं से बचा है (strict 'vars' के लिए दस्तावेज़ देखें)।

12

क्योंकि पर्ल में गैर-अस्तित्व की स्थिति में वैश्विक चर पकड़ना लगभग असंभव है। जैसे ही आप नाम से एक का उल्लेख करते हैं - यहां तक ​​कि केवल इसका संदर्भ लेने के लिए - यह मौजूद है। और क्योंकि सरणी और हैंश स्केलर्स से अलग होते हैं; एक स्केलर अस्तित्व में आता है जो undef मान रखता है, जो अधिकांश उद्देश्यों के लिए उपयोग किए जाने पर "अनियमित मूल्य का उपयोग" चेतावनी को ट्रिगर करता है; लेकिन सरणी और हैश खाली सरणी और हैंश के रूप में अस्तित्व में आते हैं, और एक खाली सरणी या हैश के बारे में चेतावनी देने के लिए पर्याप्त असाधारण नहीं है!

+2

यह केवल असंभव है यदि आप समस्या को बहुत कम संकुचित करते हैं क्योंकि सख्त उस समस्या को हल करने का अच्छा काम करता है। पकड़ यह है कि एक अपवाद विशेष रूप से पूरी तरह से योग्य नामों के लिए सख्त से बना था। एक को सिर्फ उन लोगों का उपयोग करके थोड़ा और सावधान रहना होगा। – ikegami

संबंधित मुद्दे