我有一个Perl的骨架安装,我想创建一个对话框,询问文件和/或文件夹位置,以便在/上运行脚本。
这是我的工作计算机,我需要安装Perl的权限 - IT忽略了我的请求(他们没有拒绝它)。我碰巧找到了一个安装了另一个程序的Perl的精简版本,并一直使用它来编写脚本。它有3个模块,我添加了严格和警告。
据我所知,有些模块可以做到这一点(TK是最受欢迎的),但它们依赖于其他模块(AutoLoader,DynaLoader,...),这些模块可能依赖于其他模块。潜入两个模块是一件事......偷偷打了十几个+是另一个。
编辑(从下面):另一个复杂因素。我的直接团队成员使用我的脚本,他们都有Perl的简单安装,因为他们都有父程序。有人第一次使用我的一个Perl脚本时,我设置文件关联并添加严格和警告(所以我不必记得将它们注释掉)。因此 - 我想尽可能简化设置。
我的所有脚本目前都在他们所在的文件夹上运行。由于脚本随时间的变化而变得难以处理。我目前的计划是在命令行上使用提示 - 让用户从Windows资源管理器复制文件路径,然后使用regex进行分析。我预见到有几个问题:
这似乎可行,但我想看看是否会有更友好的方法来做这件事(特别是绕过命令提示粘贴烦恼)。
希望这个论坛的问题不是太广泛 - 如果不是,我会稍后再回来尝试一些代码。
操作系统:Windows 7专业版(64位)
Perl: ActiveState版本5。6。0(2001年2月21日下载)
目前可用的模块: Exporter,RE,utf8,strict&警告。一般情况下这很有效,因为我通常只是在进行文件操作。
答案 0 :(得分:3)
你不会从13岁版本的Perl中获得太多,甚至可能不包括所有5.6模块。这个perchance是一个安装了这个版本的Perl的Rational包吗?如果是ClearCase,那就是一个名为clearprompt
的程序。你可以试试。
我知道这不是你想要的,但忘了Perl,并在PowerShell中尝试。
PowerShell是Microsoft专门为Windows创建的一种未充分利用的编程语言。它是一种与Windows紧密集成的完整的编程语言。它是高度面向对象的。它可以显示dialog boxes最重要的是,它出现在自Windows XP以来的所有Windows机器上。这意味着如果您编写PowerShell应用程序,您的所有同事都可以使用它。
我的整个Powershell体验包括三个程序。我通常在Unix / Linux环境中工作,主要在服务器端工作。但是,我们有一个客户端需要一个特殊的脚本来监控某些进程,如果这些进程在某些时间段内没有更新,则需要通过电子邮件发送支持。
在Perl中做的很简单,但他们没有Perl或Python,我被告知在这些系统上没有任何东西可以安装。我不得不使用已有的任何工具,所以我唯一的选择是PowerShell。
最后,Powershell运作良好,并没有那么难以接受。我的主要问题是我所能找到的只是PowerShell 2文档,但脚本必须运行的服务器使用PowerShell 1.更糟糕的是,我的系统有PowerShell 2,所以我会在我的系统上运行一个脚本,然后找到它没有在客户的系统上工作。但是,我确实得到了PowerShell的支持,并且仍然按时将该程序交付给客户。
如果您了解VB,那么PowerShell语法应该非常熟悉,但即使您不熟悉VB,如果您已完成任何面向对象的编程,也不应该在选择语法时遇到任何问题。因此,尽管我喜欢在Perl中编程,但您处于一个非常有限的环境中。不妨使用环境为您提供的工具。
答案 1 :(得分:1)
查看PAR::Packer
。它将使您能够从Perl程序创建独立的可执行文件。
也许您使用的所有模块都被隔离到这个单一的可执行文件而且系统范围内不可用,这将使IT部门更容易对您的特定脚本进行全面审批。
答案 2 :(得分:0)
剥离的perl 5.6不会有你想要实现的目标。 perl 5.6的唯一选择是选择已安装的GUI库(或原生WinForms),并手动将纯perl接口编程到其API中。
您可以使用可编程语言的便携版本,在那里您可以获得更多控制权,但我绝不会建议您使用I.T.球队。你应该一起工作。
如果您使用的是Windows 7,请查看PowerShell。它应该有更多的原生功能来实现你的目标。
答案 3 :(得分:0)
您可以使用Zenity或Wenity。 Zenity是一个小型命令行程序,它显示一个GUI对话框供用户进行交互,一旦他们点击“OK”,就会打印出他们对STDOUT的响应。虽然Zenity本身通常可以在Windows上运行,但它不是原生的,因此没有正常的Windows“外观和感觉”。 Wenity是我对Windows和.NET的一个简单的Zenity端口,作为一个小的,独立的,零安装的.exe文件。
您可以大致显示文件打开对话框:
my $filename = `/path/to/zenity --file-selection --title="Select input file"`;
chomp($filename);
温度应该大致相同。