Perl-内部文件(创建和执行)
我有一个关于用perl创建文件并执行它们的快速问题。我想知道是否可以使用perl生成一个文件(我实际上需要一个.bat脚本),然后在程序内部执行这个文件。我知道我可以创建文件,我已经使用perl,但是,我想在程序内部这样做。所以,我想要它做的是在程序内部创建一个批处理脚本(没有文件被写入磁盘,所有内容都保留在内存中,或者perl程序中),然后一旦它完成文件的写入,我希望能够实际执行这个文件,然后丢弃它刚刚写入的文件。我基本上是想让它动态地创建一个批处理脚本,这样我就可以从脚本的输出中输出文本文件,而不是在磁盘上创建批处理脚本,然后执行它,然后在完成后从磁盘上删除批处理文件 这能做到吗?我该怎么做 问候,,Perl-内部文件(创建和执行),perl,file,execute,Perl,File,Execute,我有一个关于用perl创建文件并执行它们的快速问题。我想知道是否可以使用perl生成一个文件(我实际上需要一个.bat脚本),然后在程序内部执行这个文件。我知道我可以创建文件,我已经使用perl,但是,我想在程序内部这样做。所以,我想要它做的是在程序内部创建一个批处理脚本(没有文件被写入磁盘,所有内容都保留在内存中,或者perl程序中),然后一旦它完成文件的写入,我希望能够实际执行这个文件,然后丢弃它刚刚写入的文件。我基本上是想让它动态地创建一个批处理脚本,这样我就可以从脚本的输出中输出文本文件
绘制打开文件;创造内容;关闭文件;执行文件(例如,使用system());删除该文件。是否确实需要批处理脚本?也许您想做的一切都可以直接从Perl完成,或者由Perl通过其
系统
命令直接调用
如果批处理脚本是必需的,那么为脚本创建一个临时文件,然后使用系统执行它有什么不对?请参阅,它甚至会在完成后自动删除临时文件
如果虚拟批处理文件策略不可避免,则可以利用cmd
的/C
和/S
选项。大概是这样的:
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
和&
与&
的对比时,您会很快意识到在批处理领域是多么可怕。尽可能远离现场。FM感谢您的努力。让我继续解释。我之所以希望如此,是因为需要创建的批处理脚本是动态构建的。基本上,基于一个充满文件的目录,在我的例子中是TIF文件,它构建了一组命令,从这些TIF文件中获取信息,然后导出一个包含原始数据的文本文件。现在,将创建.batch脚本,并将其输出到文件,然后保留在驱动器上…继续。。。我知道我可以在执行结束时轻松删除文件,但是,我不希望这样。实际上,我希望它构建命令集并执行脚本,而不是将批处理文件创建到磁盘。批处理脚本都是动态数据,格式为:tiffcommand tiffile.tif tiffcommand tiffile2.tif等。。。数据总是会更改,这就是为什么我希望动态创建并动态执行它。大多数临时文件模块(IIRC,包括file::temp)都有一个选项,可以在程序存在后自动删除创建的临时文件,或者临时文件对象超出范围。为什么要编写一个Perl程序来编写批处理程序来执行某些处理,而不是从Perl程序执行任何处理?另请参阅