मैं चरम दायरे को समझने और पर्ल में उचित रूप से घोषित करने की कोशिश कर रहा हूं, और मुझे कठिन समय है।पर्ल में वैश्विक चर घोषित करने के लिए कैसे करें?
नीचे दिया गया कोड मूल रूप से एक्सेल फ़ाइल में पढ़ता है, इसे पार करता है, और इसे एक नई एक्सेल फ़ाइल में थूकता है।
हालांकि, मैं शीर्षकों में से एक को पढ़ने की कोशिश कर रहा हूं, और यदि हेडर मेरी स्ट्रिंग से मेल खाता है, तो मैं उस कॉलम नंबर को रिकॉर्ड करना चाहता हूं, और बाद में कोड में इसका उपयोग करना चाहता हूं।
मुझे "/parser.pl लाइन 38 पर प्रिंट में अनियमित मूल्य $ site_name_col का उपयोग मिल रहा है। "
लाइन 38 "प्रिंट $ site_name_col;"
मुझे एहसास है कि यह प्रिंट स्टेटमेंट {} के बाहर है जहां चर प्रारंभ में प्रारंभ किया गया था, लेकिन इसे कोड की शुरुआत में वैश्विक चर के रूप में घोषित किया गया था, तो क्या देता है?
#!/usr/bin/perl -w
use strict;
use warnings;
use vars qw($site_name_col);
use Spreadsheet::WriteExcel;
use Spreadsheet::ParseExcel;
my ($fname1) = @ARGV;
my $parser = Spreadsheet::ParseExcel->new();
my $workbook = $parser->parse($fname1);
my $new_workbook = Spreadsheet::WriteExcel->new('formated_list.xls', $fname1);
if (!defined $workbook) {
die $parser->error(), ".\n";
}
for my $worksheet ($workbook->worksheets()) {
my ($wsheet_name) = $worksheet->get_name();
my $new_worksheet = $new_workbook->add_worksheet($wsheet_name);
my ($row_min, $row_max) = $worksheet->row_range();
my ($col_min, $col_max) = $worksheet->col_range();
for my $row ($row_min .. $row_max) {
for my $col ($col_min .. $col_max) {
my $cell = $worksheet->get_cell($row, $col);
next unless $cell;
print "Row, Col = ($row, $col)\n";
if ($cell->value() =~ /Site Name/) {
$site_name_col = $col;
}
print $site_name_col;
$new_worksheet->write($row, $col, $cell->value());
}
}
}
$new_workbook->close();
आपने 'my' का उपयोग क्यों नहीं किया ?! – ikegami