Windows 使用perl代码打印文件,但通过cmd运行
我正在尝试使用以下代码在一个文件中打印文本: test.pl 通过cygwin运行时,我可以将其打印到文件中。但当使用下面的命令通过cmd运行同一个文件时,它会在控制台上打印“Printed”,但文件不会用“Test”文本写入Windows 使用perl代码打印文件,但通过cmd运行,windows,perl,cmd,cygwin,Windows,Perl,Cmd,Cygwin,我正在尝试使用以下代码在一个文件中打印文本: test.pl 通过cygwin运行时,我可以将其打印到文件中。但当使用下面的命令通过cmd运行同一个文件时,它会在控制台上打印“Printed”,但文件不会用“Test”文本写入 C:\Users\TD>C:\cygwin64\bin\perl.exe /home/TD/GMAT/test.pl Printed C:\Users\TD> 基本上我只是测试功能,稍后我将运行系统命令从数据库中进行备份。我正试图通过任务调度程序运行这个cm
C:\Users\TD>C:\cygwin64\bin\perl.exe /home/TD/GMAT/test.pl
Printed
C:\Users\TD>
基本上我只是测试功能,稍后我将运行系统命令从数据库中进行备份。我正试图通过任务调度程序运行这个cmd来进行自动备份
在windows任务计划程序中,我打开cmd.exe并将参数设置为/c:\cygwin64\bin\perl.exe/home/TD/GMAT/test.pl
此命令在运行脚本后关闭窗口,我无法检查cmd控制台的输出,而是在cygwin控制台中打印文件
请告诉我是否有任何其他方法可以通过任务调度器自动化运行perl脚本的过程您必须始终
使用strict
和使用warnings'all'
并检查每个open
调用的状态。最好使用词法文件句柄,而不是全局文件句柄。当句柄超出范围时,词法文件句柄将隐式关闭。所以你的代码应该是这样的
#!/usr/bin/perl
use strict;
use warnings 'all';
my $file = 'testing.txt';
{
open my $fh,'>>', $file or die qq{Unable to open "$file" for appending: $!};
print $fh "Test\n";
}
print "Printed\n";
如果您运行该命令,则消息将告诉您出错的原因我看到您将自己命名为juststart,大概是为了预防批评。但是你需要在你的代码中有更多的空白,因为它将帮助你请求帮助的其他人阅读你所写的内容,而且当你明天再次面对相同的字符屏幕时,它对你来说也会更清晰
T
对于任何东西都不是一个好名字,可能只是一个时间变量,而$i
通常是一个数组索引,但肯定不是一个文件名。有趣的是,您打印的文本是正确的英语,如Test
和Printed
!你应该让你的程序同样可读。哦,我认为你应该把你的名字改成现实的名字,比如非常好的,否则你只是在隐藏,永远不会增长。@Borodin谢谢你的评论,我已经更改了代码使它更可读。以我的名义,我仍在学习(从我的名声可以看出),这不是对批评的辩护。我接受所有批评,没有任何争论。显然,随着我学习的越来越多,我会改变我的名字。谢谢你推荐的名字非常好
。哈哈。。我不太擅长使用这个名字进行编码。:)谢谢@Borodin,即使在更新代码之后,文件中也没有打印任何内容,我也无法在cmd控制台上看到任何消息C:\Users\TD>C:\cygwin64\bin\perl.exe C:\cygwin64\home\TD\GMAT\test.pl Printed
通过cygwin控制台运行相同的脚本,文件中打印了“test”文本。
#!/usr/bin/perl
use strict;
use warnings 'all';
my $file = 'testing.txt';
{
open my $fh,'>>', $file or die qq{Unable to open "$file" for appending: $!};
print $fh "Test\n";
}
print "Printed\n";