2012-01-30 15 views
5

मैं पीपीआई मॉड्यूल के साथ कुछ समस्याएं हैं:पीपीआई :: दस्तावेज़ बग या कुछ विशेष subroutine नाम?

मान मैं Foo.pm है:

package Foo; 

sub foo0 { 1; } 
sub foo1 { 1; } 
sub foo2 { 1; } 
sub foo3 { 1; } 

1; 

और मैं पीपीआई उपयोग करने के लिए सभी बाद के चरणों प्राप्त करना चाहते हैं:

#!/usr/bin/env perl 
use PPI; 
my $filename = shift; 
my $Document = PPI::Document->new($filename); 
my $subs = $Document->find('PPI::Statement::Sub'); 
warn $#$subs; 
परिणाम के रूप में

मैं '3' मिला जो सही है।

लेकिन जब Foo.pm में मेरे बाद के चरणों में से एक 'उप VN ...', जहां N एक संख्या है कहा जाता है, फ़े:

sub v1foo {} 

या

sub v3bar {} 

या बस

sub v2 {} 

पीपीआई :: दस्तावेज़ खोज पार्सिंग तोड़ने लगता है और केवल पहले ही पाए गए सबस को लौटाता है। तो मैं को संशोधित करता है, तो फू:

package Foo; 

sub foo0 { 1; } 
sub foo1 { 1; } 
sub v2xx { 1; } 
sub foo3 { 1; } 

1; 

अपने परीक्षण के परिणाम होगा "1"

घोषित वी की तरह सबरूटीन्स नाम है (पाया बाद के चरणों foo0 और foo1 हैं) [0..9] किसी भी तरह मना किया?

ग्रीटिंग्स।

+1

सुझाव इस पीपीआई बग ट्रैकर रिपोर्ट करना चाहिए: http://p3rl.org/data#Version-Strings – daxim

उत्तर

5

यह एक (अज्ञात) बग है।

यह "वी-संख्या" या "संस्करण संख्या" की अवधारणा से संबंधित है।

एक वी संख्या v1.2.3 और पार्सर्स को पीपीआई :: टोकन :: संख्या :: संस्करण ऑब्जेक्ट में कुछ दिखता है।

जो समस्या आप देख रहे हैं वह "v, digit, ..." को ढूंढने वाले पार्स है, इसे एक वी-नंबर के रूप में पार्स कर रहा है और फिर उसके बाद चरित्र पर अगला टोकन शुरू कर रहा है (जो इसे नहीं करना चाहिए)।

इसके अतिरिक्त, उप v1 {} मामले में v1 को v-number के बजाय subroutine नाम "v1" के रूप में पार्स किया जाना चाहिए।

आपको कम से https://rt.cpan.org/Public/Dist/Display.html?Name=PPI

+1

जवाब के लिए धन्यवाद। रिपोर्ट भेजी जाती है। – Robert