我想编写一个perl脚本,允许用户从Windows资源管理器中选择一个文件,并将其用作perl脚本中代码的输入(如STDIN)。
因此,代码将打开Windows资源管理器到正确的目录,然后用户将单击(选择)他们的文件,然后脚本将作为变量对所选文件进行操作(例如我的$selectedFile)。
我找到了一些打开窗口资源管理器的代码:
my $explorer = 'c:/windows/SysWOW64/explorer.exe';
my $directory = 'C:\testdir\';
system($explorer,$directory);
。它工作正常(基于 Perl 僧侣 http://www.perlmonks.org/bare/?node_id=313539)从 pl 脚本打开 Windows 资源管理器。
如何让代码识别我在资源管理器窗口中单击的文件,并从中创建变量?这是可能的还是Perl不是这样做的方法?
干杯马 特
下面是一个使用 Win32::GUI 的非常简单的脚本:
use strict;
use warnings;
use Win32::GUI ();
my $file = Win32::GUI::GetOpenFileName(
-filemustexist => 1,
);
if (defined $file) {
print "Selected file: $filen";
} else {
print "Canceledn";
}
如果你还没有Win32::GUI(Can't locate Win32/GUI.pm in @INC ...
),你可以使用cpan Win32::GUI
安装它,至少使用Strawberry Perl。如果你使用的是ActivePerl,我想你可以用ppm install Win32-GUI
来获得它。
这是使用 Tk 的一种非常简单的方法。
use warnings;
use strict;
use Tk;
my $file = Tk::MainWindow->new->getOpenFile;
print "selected file: $filenn";
open my $fh, '<', $file or die $!;
while (<$fh>){
print;
}