Perl - 内部文件(创建和执行)

时间:2010-04-03 21:35:20

标签: perl file execute

我有一个关于使用perl创建文件并执行它们的快速问题。我想知道是否可以使用perl生成文件(我实际上需要一个.bat脚本),然后在程序内部执行此文件。我知道我可以创建文件,而且我有perl,但是,我想在内部对程序执行此操作。所以,我想要它实际上是在程序内部创建一个批处理脚本(没有文件实际写入磁盘,一切都保留在内存中,或perl程序),然后一旦完成文件的写入,我希望能够实际执行此文件,然后丢弃它刚才写的文件。我基本上试图让它动态创建一个批处理脚本,这样我就可以从脚本输出中输出文本文件,而不是在磁盘上创建批处理脚本,然后执行它,然后删除批处理完成后从磁盘写入文件。

可以这样做,我将如何做到这一点?

此致 德鲁

2 个答案:

答案 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());删除文件。