2011-12-23 8 views
5

मैं एक स्क्रिप्ट बनाने की कोशिश कर रहा हूं जो पाठ फ़ाइलों को पढ़ेगा और फिर उनका विश्लेषण करेगा, भले ही टेक्स्ट फ़ाइल ऑनलाइन या ऑफलाइन हो।पर्ल: वेब टेक्स्ट फ़ाइल पढ़ें और इसे "खोलें"

ऑफ़लाइन भाग किया जाता है, ऑनलाइन भाग के लिए अब

का उपयोग कर, वहाँ वैसे भी "खुला" यह एक वेबसाइट पर एक पाठ फ़ाइल को पढ़ने और फिर करने के लिए है?

यह क्या मैं प्राप्त करने की आशा है:

if ($offline) { 
    open(FILENAME, "anyfilename.txt") 
} 
elsif ($online) { 
    ##somehow open the http web text so that I can do a while (<FILENAME>) later 
} 

analyze_file(); 

sub analyze_file { 
    while (<FILENAME>) {analyze analyze} 
} 

वहाँ "मिल ('http://weblink.com/textfile.txt;)" है, लेकिन यह एक स्ट्रिंग पैदा करता है। मैं उस स्ट्रिंग के साथ थोड़ी देर() नहीं कर सकता।

क्या कोई जानता है कि यह कैसे किया जा सकता है?

उत्तर

11

यह आसान है, बस open FILEHANDLE,MODE,REFERENCEopen की शैली का उपयोग करें।

use LWP::Simple; 
if ($offline) { 
    open(FILENAME, '<', "anyfilename.txt") 
} 
elsif ($online) { 
    my $text = get 'http://example.com'; 
    open(FILENAME, '<', \$text); 
} 
+0

+1, यह संभवतः ऐसा करने का सही तरीका है। लेकिन इस अवसर के आधार पर, एक स्केलर को फ़ाइल हैंडल खोलना मेरे लिए बहुत अधिक लगता है और मैं केवल स्केलर को लाइनों की सरणी में विभाजित करने के अपने प्रस्तावित समाधान का उपयोग करता हूं। – sidyll

+0

@sidyll एक स्केलर को फ़ाइल हैंडल क्यों खोलना बहुत अधिक होगा? ब्रैड गिल्बर्ट धन्यवाद !! –

+0

@ ब्रैड-गिल्बर्ट वास्तव में \ $ के इस संदर्भ में स्लैश क्या करता है? आम तौर पर अगर इसके बाद जो भी आता है उसे हटा देता है। कोड क्यों काम करता है क्योंकि पाठ में $ को निरस्त कर दिया जाता है? –

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