यह स्क्रिप्ट:
#!/usr/bin/perl
use strict;
use warnings;
my ${fh};
open($fh, '<', "some_file.txt") or die "fail\n";
while(my $line = <${fh}>) {
print $line;
}
close $fh;
आउटपुट:
GLOB(0x5bcc2a0)
क्यों इस उत्पादन है?
यदि मैं <${fh}>
से <$fh>
बदलता हूं, तो यह अपेक्षित रूप से some_file.txt
लाइन प्रिंट करेगा। मैंने सोचा कि ब्रेसिज़ का उपयोग चर नामों को सीमित करने के लिए किया जा सकता है, और my ${var}
my $var
जैसा ही होगा।
क्या ऐसे अन्य परिदृश्य हैं जहां {}
को एक परिवर्तनीय नाम के आसपास जोड़ना समस्याएं पैदा करता है?
मैंने Red Hat और Cygwin Perl 5.14 पर पर्ल 5.8.8 पर कोशिश की।
ऐसे कई परिदृश्य हैं जहां '{}' पार्स बदलना शामिल है, उदा। '" $ foobar "' बनाम '" $ {foo} बार "', '" $ foo :: bar "' बनाम '" $ {foo} :: bar "', '" $ foo's bar "' बनाम। '" $ {foo} की बार "', '" $ foo [0] "' बनाम '" $ {foo} [0] "'। लेकिन मुझे लगता है कि आप स्ट्रिंग इंटरपोलेशन के अलावा स्थितियों के बारे में पूछ रहे हैं? – ThisSuitIsBlackNot
@ThisSuitIsBlack नहीं आपने सही अनुमान लगाया है। महान जवाब भी! – chilemagic