कैसे करने के लिए एक पाठ फ़ाइल को पढ़ने पर्ल में

कार्य । वहाँ एक पाठ फ़ाइल है । आप की जरूरत है लोड करने के लिए इसकी सामग्री में एक अदिश चर में एक पर्ल प्रोग्राम.

इस तरह के एक समस्या प्रतीत होता है काफी अक्सर होता है. उदाहरण के लिए, इस तरह के एक समस्या हो सकता है पढ़ने के विन्यास फाइल या छोटे डेटा फ़ाइलें. अगर आप की जरूरत है प्रक्रिया के लिए एक बड़ी फ़ाइल है, यह बेहतर है नहीं करने के लिए इस विधि का उपयोग करें, और उपयोग करने के लिए एक स्ट्रीम से पढ़ने के लिए एक फ़ाइल है.

समाधान. का उपयोग करने के लिए एक पुस्तकालय पथ::छोटे

सबसे आसान और सबसे सुविधाजनक समाधान है का उपयोग करने के लिए पर्ल पुस्तकालय पथ::छोटे

#!/usr/bin/perl

use strict;
use warnings FATAL => 'all';
use utf8;
use open qw(:std :utf8);

use Path::Tiny;

my $file_name = 'a.txt';

my $content = path($file_name)->slurp_utf8();

print $content;

यहाँ path('a.txt') बनाता है एक वस्तु के वर्ग पथ::छोटे, और ->slurp_utf8() विधि कॉल करने slurp_utf8 इस वस्तु. परिणाम में एक चर $content चबूतरे सभी फाइल की सामग्री.

यह एक अच्छा समाधान है, लेकिन वहाँ एक सूक्ष्मता है. लाइब्रेरी पथ::छोटे नहीं है पर्ल के साथ, यह रखा जाना चाहिए अलग. आमतौर पर इस का कारण बनता है कोई समस्या नहीं है, लेकिन कुछ स्थितियों में इस समाधान के लिए उपयुक्त नहीं है ।

समाधान. फ़ाइल को पढ़ने के लिए मानक उपकरण के साथ पर्ल

यह समाधान बहुत सुविधाजनक नहीं है का उपयोग कर के रूप पुस्तकालय पथ::छोटे, मैं और अधिक लिखने के लिए, लेकिन यह नहीं स्थापना की आवश्यकता के अतिरिक्त पुस्तकालयों.

#!/usr/bin/perl

use strict;
use warnings FATAL => 'all';
use utf8;
use open qw(:std :utf8);

my $file_name = 'a.txt';

my $content = '';

open FILE, '<', $file_name or die $!;

while (<FILE>) {
    $content .= $_;
}

print $content;

का उपयोग कर open हम बनाया एक फ़ाइल हैंडलर FILE. जब काम के साथ open यह महत्वपूर्ण है उपयोग करने के लिए तीन तर्क और यह बहुत महत्वपूर्ण है लिखने के लिए or die, नहीं || die. तो के साथ मदद while (<FILE>) हम चारों ओर चला फ़ाइल लाइन से लाइन ले लीजिए और सभी सामग्री को एक चर $content.

प्रारंभ में, हम सौंपा चर $content रिक्त पंक्ति ''. यह आवश्यक है क्रम में करने के लिए कर कोड सही ढंग से काम के मामले में खाली फ़ाइल (यदि आप आवंटित नहीं एक खाली स्ट्रिंग के मामले में, एक खाली फ़ाइल में एक चर $content होगा undef).

एक बहुत ही खतरनाक फैसला है । उपयोग cat

यहाँ एक और तरीका है कैसे आप पढ़ सकते हैं फ़ाइल की सामग्री में एक चर है. इस समाधान की आवश्यकता नहीं है किसी भी अतिरिक्त पुस्तकालयों की आवश्यकता नहीं होती और कई लेखन कोड की लाइनों, लेकिन यह एक कील समाधान है । यह सबसे अच्छा है लिखने के लिए कभी नहीं. केवल एक ही तरीका है यह करने के लिए जब परियोजना में कोई Path::Tany, सक्रिय रूप से काम कर रहे हैं और जाँच करने के लिए प्रोग्राम के अन्य भागों की जरूरत है कुछ जल्दी कोड पढ़ता है कि फाइल. लेकिन इस मामले में, आप की जरूरत है अगले एक टिप्पणी छोड़ दो # TODO और पहली अवसर पर दूर करने के लिए इस कोड.

#!/usr/bin/perl

use strict;
use warnings FATAL => 'all';
use utf8;
use open qw(:std :utf8);

my $file_name = 'a.txt';

my $content = `cat $file_name`;

print $content;

क्यों यह एक बुरा निर्णय है । पहले वहाँ है कोई त्रुटि हैंडलिंग । यदि फ़ाइल नहीं है, तो STDERR एक चेतावनी प्राप्त होगा cat: asdf: No such file or directory, लेकिन इस कार्यक्रम में आगे जाना होगा. दूसरी बात, यह काम नहीं करेगा, तो फ़ाइल नाम में एक स्थान है । तीसरा, यदि सामग्री से चर $file_name हम बाहर वहाँ एक मौका है कि वहाँ हो जाएगा की तरह कुछ a.txt; rm -rf / और इसके अलावा में पढ़ने के लिए फ़ाइल अभी भी क्रियान्वित किया जा असुरक्षित कार्य करता है.

अन्य लेख