1

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

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

问候,德鲁

4

2 回答 2

2

你真的需要一个批处理脚本吗?也许你想做的所有事情都可以直接从 Perl 完成,或者由 Perl 通过它的system命令直接调用。

如果批处理脚本是必不可少的,那么为脚本创建一个临时文件然后执行它有什么问题system?请参阅File::Temp,它甚至会在您完成后自动删除临时文件。

/C如果虚拟批处理文件策略是不可避免的,您也许可以/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&vs.&&时,你会很快体会到它在Batch 的土地上是多么的可怕。尽可能远离。

于 2010-04-03T22:15:11.853 回答
1

打开文件;创建内容;关闭文件;执行文件(例如使用 system());删除文件。

于 2010-04-03T21:36:57.307 回答