我正在构建一个perl应用程序,它通过DBD::Pg模块与PostgreSQL数据库交互,并使用Perl/Tk作为它的GUI。它在我的系统上运行得相当好,但我正在设计它供家庭成员用于他们的业务。他们没有C++编译器,也不知道CPAN是什么。目标是不让他们因为必须加载c++编译器而陷入困境,并尽可能避免从源代码构建模块的所有麻烦。我需要将Tk模块连同StrawberryPerl(它包括开箱即用的DBD:Pg)一起安装到他们的计算机上。我该如何着手将此模块与我的应用程序一起包括在内,以便让我的最终用户使用起来更轻松?在安装过程中将我的整个C:\strawberry\perl\site\li
我正试图对最终用户“隐藏”我的一些Perl程序,以便他们使用起来更轻松。我正在尽我所能使它们远离命令提示符。该程序本身有一个用Perl/Tk设计的GUI,因此他们不必担心命令提示符。我可以写一个快速的批处理文件吗?STARTperl'C:\[somepathhere]\myscript.pl'使用START启动程序,Perl解释器作为我的程序,我的Perl脚本的路径/名称作为参数?我是否必须指定在哪里可以找到perl,或者Windows会因为perl在计算机的PATH变量中而知道吗? 最佳答案 我有一个完全邪恶的VBS脚本和批处理文
从目录中删除与Windows上Perl中的特定正则表达式匹配的所有文件的最短和最好的方法。我的示例:从目录中删除所有*.txt文件,但保留tmp.txt?window。 最佳答案 chdir$dirordie$!;unlinkgrep{$_ne'tmp.txt'}; 关于windows-删除匹配正则表达式的文件,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/5193282/
如何使用Perl检查特定Windows进程是否正在运行?基本上,我想使用“exec”启动一个进程,但只有当它尚未运行时我才应该这样做。那么如何知Prop有特定名称的进程是否正在运行呢?有没有提供此功能的Perl模块? 最佳答案 看看以下使用Win32::OLE的示例模块。它允许您搜索名称与给定正则表达式匹配的正在运行的进程。#!perlusewarnings;usestrict;useWin32::OLEqw(in);submatching_processes{my($pattern)=@_;my$objWMI=Win32::OLE
我正在将UnixPerl脚本转换为在Windows上运行。我在处理包含空格的路径时遇到问题:open(IN,"|C:\\ProgramFiles\\MySQL\\MySQLServer5.1\\bin\\mysql.exe-uroot-ppwd")ordie"$!";上面的代码抛出以下错误:'C:\Program'未被识别为内部或外部命令,我试过像这样在转义的\"中包装:open(IN,"|\"C:\\ProgramFiles\\MySQL\\MySQLServer5.1\\bin\\mysql.exe-uroot-ppwd\"")ordie"$!";但没有快乐。如何处理带空格的路径?
我是一名Perl程序员,有一些不错的脚本可以使用cURL获取HTTP页面(从URL的文本文件列表)并将它们保存到文件夹中。但是,获取的页面数在千万级别。有时脚本在编号170,000上失败,我必须手动重新启动脚本。它会自动读取URL并查看是否有页面已下载并跳过。但是,如果有几十万,跳回到它停止的地方仍然需要几个小时。显然,这最终不会成功。有人告诉我,与其保存到难以搜索和修改的文本文件,不如使用数据库。我对数据库不太了解,一年前只是在学校服务器上弄乱了MySQL。我只需要能够添加数百万行和几个静态列,快速搜索/修改一个列,然后在lan本地(或一台计算机,如果这很困难)执行所有这些操作。当然
为了减少发出的命令数量,我需要在perl语句中放入尽可能多的字符system("$cmd_and_parameters")在Windows和Linux下,我可以假设的(安全)最大行长度是多少?我的问题是因为需要发出Oetiker“rrdtool套件”的命令,没有使用正确的perl模块(请不要为此责怪我)。我的第一次尝试是使用前面提到的功能,设置$cmd_and_parameters="path_to_rrdtool/rrdtoolupdate$db$timestamp:$value"它可以工作,但速度很慢,考虑到我必须执行的更新次数。因此,在“rrdtoolupdate”允许的情况下,
我尝试使用StrawberryPerl,但让我感到困惑的其中一件事是阅读文件。我尝试过:open(FH,"D:\test\numbers.txt");但是它找不到文件(尽管文件在那里,并且没有权限问题)。等效代码(除文件名外,脚本100%相同)在Linux上运行良好。 最佳答案 根据PerlFAQ5,您应该在DOS/Windows文件名中使用正斜杠(或者,作为替代方案,转义反斜杠)。Whycan'tIuse"C:\temp\foo"inDOSpaths?Whydoesn't`C:\temp\foo.exe`work?Whoops!Y
我在Windows上使用perl,并尝试使用perl做一个单行代码,以使用包含美元符号的windows变量替换文件中的占位符。有谁知道使它与美元符号一起使用的正确用法是什么。我尝试了各种方法,但似乎无法让它发挥作用。例如,我有一个属性文件,其中包含一个token(!MYPASSWORD!),我正在尝试将其替换为:somevalue="!MYPASSWORD!"我有一个批处理文件,它查找一个名为NEWPASSWORD的变量,其中包含密码$abc12345$,我想使用perl替换来替换如下值。请注意,我可能并不总是知道$符号在哪里,所以我无法避开它们。例如,另一个密码可能是abc$124$
我正在运行一个脚本,该脚本从一个特定位置复制一个文件夹,如果它不存在(或不一致)。当我同时运行脚本2次以上时,问题就出现了。由于第一个脚本试图复制文件,第二个脚本来了并尝试同样的事情导致一团糟。我怎样才能避免这种情况?类似于系统范围的互斥体。我用-w尝试了一个简单的测试,我手动复制了文件夹,在复制文件夹的同时我运行了脚本:usestrict;usewarnings;my$filename='d:\\folder_to_copy';if(-w$filename){print"icanwritetothefile\n";}else{print"yikes,ican'twritetothef