मैं यह समझने की कोशिश कर रहा हूं कि पर्ल मॉड्यूल को कैसे सम्मानित किया जाए और फ़ाइलहेडल के संदर्भ को खोलें। आप समझते हैं कि मैं क्या मतलब है जब आप मुख्य प्रोग्राम देखें:एक एसटीडीआईएन फ़ाइल की एक प्रति को कैसे खराब करें?
#!/usr/bin/perl
use strict;
use warnings;
use lib '/usr/local/share/custom_pm';
use Read_FQ;
# open the STDIN filehandle and make a copy of it for (safe handling)
open(FILECOPY, "<&STDIN") or die "Couldn't duplicate STDIN: $!";
# filehandle ref
my $FH_ref = \*FILECOPY;
# pass a reference of the filehandle copy to the module's subroutine
# the value the perl module returns gets stored in $value
my $value = {Read_FQ::read_fq($FH_ref)};
# do something with $value
असल में, मैं STDIN के माध्यम से इनपुट प्राप्त करने के लिए, (सुरक्षित संचालन के लिए) STDIN filehandle की एक प्रतिलिपि बनाने मुख्य प्रोग्राम चाहते हैं तो एक संदर्भ पारित Read_FQ.pm फ़ाइल (perl मॉड्यूल) में read_fq() subroutine पर उस प्रतिलिपि के लिए। तब subroutine उस फ़ाइल हैंडल से इनपुट पढ़ेगा, इसे संसाधित करेगा, और एक मूल्य वापस करेगा। यहां Read_FQ.pm फ़ाइल:
package Read_FQ;
sub read_fq{
my ($filehandle) = @_;
my contents = '';
open my $fh, '<', $filehandle or die "Too bad! Couldn't open $filehandle for read\n";
while (<$fh>) {
# do something
}
close $fh;
return $contents;
यहां मैं परेशानी में भाग रहा हूं। टर्मिनल में, जब मैं मुख्य कार्यक्रम के लिए एक फ़ाइल नाम पारित खोलने के लिए:
cat file.txt | ./script01.pl
यह निम्न त्रुटि संदेश देता है: Too bad! Couldn't open GLOB(0xfa97f0) for read
यह मुझसे कहता है समस्या मैं कैसे अपसंदर्भन और कर रहा हूँ यह है कि पर्ल मॉड्यूल में फ़ाइलहेडल के संदर्भ को खोलना। मुख्य कार्यक्रम ठीक है। मैंने पढ़ा है कि $refGlob = \*FILE;
फ़ाइल हैंडल का संदर्भ है और ज्यादातर मामलों में, पर्ल द्वारा स्वचालित रूप से संदर्भित किया जाना चाहिए। हालांकि, यह वह मामला यहां नहीं है। क्या किसी को पता है कि फाइलहेडल रेफरी को कैसे डिफरेंस करना है ताकि मैं इसे संसाधित कर सकूं?
धन्यवाद। कोई भी सुझाव अति सराहनीय है।
आह ठीक है जो समझ में आता है। इसलिए मुझे मॉड्यूल में फिर से फाइलहेडल रेफ को फिर से खोलने की आवश्यकता नहीं है। मैं अभी '$ FH_ref' से तुरंत पढ़ना शुरू कर सकता हूं। ठीक है, यह स्पष्ट है। मैंने सोचा कि इसे इस्तेमाल करने के लिए मुझे इसे सम्मानित करने की आवश्यकता है। धन्यवाद – cooldood3490