1

在尝试执行以下代码时,我收到以下错误消息:

Use of tied on a handle without * is deprecated at C:/Perl/lib/XML/Parser/Expat.pm.

我听说这可以通过安装 XML::Parser v2.41 来解决。如何安装特定版本的 XML::Parser?

#!usr/bin/perl
use strict;
use warnings;
use XML::Simple;
use Spreadsheet::ParseExcel;
my $FileName = 'sample.xls';
my $xml_file = 'hello.xml';
my $par=$ARGV[0];
my $xml = XMLin(
    $xml_file,
    KeepRoot => 1,
    ForceArray => 1,
);
my $parser   = Spreadsheet::ParseExcel->new();
my $workbook = $parser->parse($FileName);
die "Parser not Defined", ".\n" if ( !defined $workbook );

    for my $worksheet ( $workbook->worksheets() ) {

        # Find out the worksheet ranges
        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;
        $xml->{$par} = $cell->value();

            }
        }
    }
4

2 回答 2

2

您不需要安装特定版本,您只需要安装最新的,以下将执行此操作:

cpan XML::Parser

更改日志确实表明此错误已在 2.41 中修复(恰好是最新版本)。

于 2012-07-12T20:58:49.493 回答
0

我找到了答案.. 没有什么特别的安装.. ActivePerl 版本 5.14.2 具有所有受支持和更新的软件包.. 这将起作用。即使是 5.14.1 版本也没有所有更新的包。所以请只使用 5.14.2。

于 2012-07-14T08:21:07.170 回答