我有一个关于使用perl创建文件并执行它们的快速问题。我想知道是否可以使用perl生成文件(我实际上需要一个.bat脚本),然后在程序内部执行此文件。我知道我可以创建文件,而且我有perl,但是,我想在内部对程序执行此操作。所以,我想要它实际上是在程序内部创建一个批处理脚本(没有文件实际写入磁盘,一切都保留在内存中,或perl程序),然后一旦完成文件的写入,我希望能够实际执行此文件,然后丢弃它刚才写的文件。我基本上试图让它动态创建一个批处理脚本,这样我就可以从脚本输出中输出文本文件,而不是在磁盘上创建批处理脚本,然后执行它,然后删除批处理完成后从磁盘写入文件。
可以这样做,我将如何做到这一点?
此致 德鲁
答案 0 :(得分:2)
你真的需要一个批处理脚本吗?也许你想做的一切都可以直接从Perl完成,或者由Perl通过system
命令直接调用。
如果批处理脚本是必不可少的,那么为脚本创建临时文件然后使用system
执行它有什么问题?请参阅File::Temp,它甚至会在您完成后自动删除临时文件。
如果虚拟批处理文件策略不可避免,您可以利用/C
的{{1}}和/S
选项。像这样:
cmd
但这感觉非常错误。必须有更好的方法来实现应用程序的更大目标。顺便说一句,当您运行use strict;
use warnings;
my @batch_commands = (
'dir',
q{echo "Make sure quoting isn't busted"},
'ipconfig',
);
# Use & or &&, depending on your needs. Run `cmd /?` for details.
my $virtual_bat_file = join " &\n", @batch_commands;
system "cmd /C $virtual_bat_file";
以了解cmd /?
,/C
和/S
与&
时,您会很快意识到它有多糟糕在批次土地。尽可能远离。
答案 1 :(得分:1)
打开文件;创造内容;关闭文件;执行文件(例如,使用system());删除文件。