我有一个名为xyz.prl的perl脚本文件。 如果我在命令提示符下运行它,那么它将要求一些命令行输入。 所以我将所有输入放在一个名为input.txt的单独文件中。 然后我在命令窗口中使用了以下命令。
D:>xyz.prl < input.txt
但它没有从文件input.txt获取值,而是通过询问第一个值进入无限循环。
如果我只给xyz.prl,那么就是要求输入值。并接受我手动提供的价值。
实际上我必须开发基于VC ++(MFC)对话框的应用程序并使用windowsXP。在那里我必须使用系统命令来运行这个xyz.prl,我必须将所有参数作为文本文件(input.txt)传递。我很遗憾地通知你,xyz.prl是高度安全的文件,我无法共享代码。
如果我直接在命令提示符下给出xyz.prl,它会逐个询问输入值。但是使用系统调用我无法发送类似的值。
我对perl完全不熟悉。所以请让我知道我必须传递给系统命令的命令。
谢谢,
塞古 谢谢 塞古
答案 0 :(得分:2)
使用shell重定向xyz.pl < input.txt
我相信您通过STDIN从文件中提供输入,可以使用<STDIN>
或菱形运算符<>
读取。
但是,从文件读取数据的一般方法是:
<强>用法:强>
$ xyz.pl input.txt
<强>代码:强>
use strict;
use warnings;
use ARGV::readonly;
while (<>) {
# $_ variable contains each line from the file
}
答案 1 :(得分:1)
那是因为input.txt不会作为参数传递 - 它可以作为流访问。在下面的示例中,它是“while(&lt;&gt;)”
http://alumnus.caltech.edu/~svhwan/prodScript/perlGettingInput.html
#!/bin/sh
#! -*- perl -*-
eval 'exec $PERLLOCATION/bin/perl -x $0 ${1+"$@"} ;'
if 0;
$okayToPrint = 0;
while (<>) {
my $currLine = $_;
if ($currLine eq "WorldBegin\n") {
$okayToPrint = 1;
} elsif ($currLine eq "WorldEnd\n") {
$okayToPrint = 0;
} else {
# some line between WorldBegin and WorldEnd
print $currLine;
}
}