我正在尝试使用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;
如何修改此代码以创建所需的效果?
答案 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();