perl - 在 perl 中打包数组会导致“无法定位方法”错误
问题描述
我正在尝试使用 Tk 和 Archive::Tar 在 perl 中创建一个基本的 GUI 备份系统。没什么复杂的,只是制作 .tar.bz2 文件的前端。因此,Archive::Tar 命令的参数之一是数组。为了确定要放入该数组中的内容,我需要从 Tk 中包含的输入框中接收信息。但是,该程序无法编译,并在打包条目的行产生“无法定位方法”错误。
以下是一个示例(确保已安装软件包!):
use strict; use warnings;
use Tk;
my $mw = MainWindow -> new;
@filelist = $mw -> Entry( -width = 30 );
@filelist -> pack;
如何修改此代码以创建所需的效果?
解决方案
该Entry
方法返回单个对象。你可以在这里找到它的文档。
@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();
推荐阅读
- sorting - 用couchdb中keys数组的第三个参数排序
- rabbitmq - RabbitMQ 中的消费者同步
- python - 如何不从生成器返回重复值?
- hadoop-yarn - [apache-flink]如何将不同的flink作业提交到不同的yarn集群
- powershell - 从 Windows Powershell 运行 Exchange 命令
- scala - 使用 UDF 时的任务序列化错误
- ruby-on-rails - 如何在“griddler-sendgrid”gem 中跳过 SPF 验证?
- azure - 子网内的 Azure 负载均衡器
- javascript - 在关闭浏览器窗口时通过 CGI 运行 bash 脚本
- javascript - 如何通过我的应用程序代码(即 NodeJS)将 cronjob 条目动态添加到基于 ubuntu 的容器中?