打包数组会在​​Perl中导致“找不到方法”错误

时间:2019-06-30 17:10:19

标签: perl tk

我正在尝试使用Tk和Archive :: Tar在perl中创建一个基本的GUIed备份系统。没什么复杂的,只是制作.tar.bz2文件的前端。因此,Archive :: Tar命令的参数之一是数组。为了确定要放在该数组中的内容,我需要从Tk附带的输入框中接收信息。但是,该程序无法编译,并在打包条目的行上产生“找不到方法”错误。

以下是示例(确保已安装软件包!):

use strict; use warnings;

use Tk;

my $mw = MainWindow -> new;

@filelist = $mw -> Entry( -width = 30 );
@filelist -> pack;

如何修改此代码以创建所需的效果?

1 个答案:

答案 0 :(得分:2)

Entry方法返回一个对象。您可以找到其文档here

@filelist是一个数组。您不能仅在标量上调用数组上的方法。

标准方法是使用Tk::getOpenFile小部件:

#!/usr/bin/perl
use warnings;
use strict;
use feature qw{ say };

use Tk;

my $mw = MainWindow->new;
my $button = $mw->Button(
    -text => 'Select Files',
    -command => sub {
        my $files = $mw->getOpenFile(-multiple => 1);
        say for @$files;
    },
)->pack;

MainLoop();