2011-10-28 6 views
29

मैं उम्मीद कर रहा हूँ:पेर्ल के autodie.pm में बग?

#!/usr/bin/perl 
use autodie; 
# autodie in effect here 
{ 
    no autodie; 
    # autodie is not in effect here 
} 
# autodie should be in effect here because of the supposedly lexical scope 
# of autodie, but this doesn't die: 
open my $i, '<', '/nonexistent'; 

मैं perldoc autodie पर कि आधार का कहना है कि:

"autodie" pragma, शाब्दिक गुंजाइश है जिसका अर्थ है कि कार्य करता है और सबरूटीन्स "autodie" के साथ बदल ही होगा संलग्न ब्लॉक, फ़ाइल के अंत, या "eval"

इसके अलावा जब तक उनके व्यवहार बदलने के लिए, { no autodie } (एक दायरे में) भी है SYNOPSIS

use/no warnings बर्ताव के हिस्से के रूप में मैं उम्मीद:

#!/usr/bin/perl 
use warnings; 
{ 
    no warnings; 
} 
# This *does* generate a warning 
print undef; 

मैं कुछ छूट गया है या तुम वहाँ autodie में एक बग सहमत हैं? मैं autodie buglist

This is perl, v5.10.1 (*) built for i486-linux-gnu-thread-multi 

संपादित में कुछ भी नहीं मिला: मैं अब a bug report

+2

पर्ल v5.14.2 (x86_64) में पुष्टि की गई। –

उत्तर

9

दायर किया है तो मैं v5.10.0 (Debian x86_64) और ActiveState 5.14.2 के साथ इस पुन: पेश कर सकते हैं।

बग रिपोर्ट के लिए this location आज़माएं। समस्या को नाकाम करने के लिए जब तक बग तय हो गई है, तो आप फिर use autodie करना होगा::

संपादित मैं कुछ परीक्षण किया वास्तव में निर्देश एक शाब्दिक गुंजाइश होने के प्रदर्शित नहीं करता है

use strict; 
use autodie; 

do { 
    no autodie; 
    # ... 
} while(0); 

use autodie; 

open FILE, '<', '/non-existing'; # dies again. 
+0

धन्यवाद, हाँ, एक साधारण पुनरुत्पादन स्क्रिप्ट के लिए मेरी खोज में मैंने यह भी पाया था कि 'ऑटोोडी का उपयोग करें;' फिर से एक कामकाज था। हालांकि इसे पोस्ट में रखना भूल गए। –

4

सार , लेकिन दस्तावेज़ीकरण में कहीं और कई बार उल्लेख किया गया है। यह स्पष्ट रूप से एक बग है।

प्रश्न बन जाता है: क्या बग अभी भी मौजूद है?

$ perl -E'use autodie; say $autodie::VERSION' 
2.1001 

$ perl -we'use autodie; { no autodie; } open(my $fh, "<", "nonexistant");' 

$ perl -we'use autodie; open(my $fh, "<", "nonexistant");' 
Can't open 'nonexistant' for reading: 'No such file or directory' at -e line 1 

$ perl -we'{ use autodie; } open(my $fh, "<", "nonexistant");' 

हाँ, ऐसा करता है। यह केवल no autodie; है जो टूट गया है, हालांकि। विचित्र रूप से, ऑटोडी का वह संस्करण सीपीएएन पर वर्तमान में उपलब्ध है की तुलना में नया है ?! तो मैंने डाउनग्रेड किया और फिर कोशिश की।

$ perl -E'use autodie; say $autodie::VERSION' 
2.10 

$ perl -we'use autodie; { no autodie; } open(my $fh, "<", "nonexistant");' 

$ perl -we'use autodie; open(my $fh, "<", "nonexistant");' 
Can't open 'nonexistant' for reading: 'No such file or directory' at -e line 1 

$ perl -we'{ use autodie; } open(my $fh, "<", "nonexistant");' 

बग्स autodie के bug tracker का उपयोग कर दर्ज की जा सकती।

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