是否有任何方法可以从Perl中的 foo1.pl 执行 foo2.pl ,并将 foo2.txt 附加到 foo1.txt 然后创建 foo3.txt ?感谢。
即
foo1.pl
print "Hello"; # output to foo1.txt;
foo2.pl
print "World"; # output to foo2.txt;
如何根据 foo1.pl 创建 foo3.txt 文件。
foo3.txt
Hello
World
将 foo2.txt 附加到 foo1.txt 。
据我所知,我可以打开 foo1.txt 和 foo2.txt ,然后在 foo3.pl 中包含这些行。
print FOO3_TXT (<FOO1_TXT>);
print FOO3_TXT (<FOO2_TXT>);
有什么好方法吗?
更新我的测试(ActivePerl 5.10.1)
我的foo.pl
#!C:\Perl\bin\perl.exe
use strict;
use warnings;
print "world\n";
我的 hw.pl (同一目录下的foo.pl和hw.pl)
#!C:\Perl\bin\perl.exe
use strict;
use warnings;
print 'hello ';
print `./foo.pl`;
输出
** d:\学习\ perl的&GT; hw.pl
你好'。'不被视为内部或外部命令, 可操作程序或批处理文件。**
如果hw.pl已更新{}:
#!C:\Perl\bin\perl.exe
use strict;
use warnings;
print q{hello }, qx{./foo.pl};
现在输出。 (对于你好的放松而言略有不同)
d:\学习\ perl的&GT; hw.pl ''不被视为内部或外部命令, 可操作程序或批处理文件。 喂
[更新]。
固定。见答案,
答案 0 :(得分:2)
将其作为脚本运行
perl foo1.pl > foo3.txt;
perl foo2.pl >> foo3.txt;
foo1.pl的内容
!#/bin/perl
print "Hello";
foo2.pl的内容
!#/bin/perl
print "World";
或
如果您正在运行linux以将foo2.txt附加到foo1.txt,则只需使用cat
命令。
答案 1 :(得分:1)
如果你是关于execute foo2.pl from foo1.pl in Perl
的字面意思,那么你就可以做到这一点:
print 'hello ';
print qx(perl foo2.pl);
qx
是另一种运行反引号等系统命令的方法。因此,perl foo2.pl
运行时输出将被发送回您的调用perl脚本。
所以这里使用反引号一样。它还使用直接调用脚本(这是更好的):
print 'hello ';
print `./foo2.pl`;
如果你期望脚本有很多输出,那么最好不要像上面两个例子那样将它全部加载到内存中。而是像这样使用open
:
print 'hello ';
open my $foo2, '-|', './foo2.pl';
print <$foo2>;
close $foo2;
你可以将它包装成一个打印语句,用于“hello world”示例:
print 'hello ', do {
open my $foo2, '-|', './foo2.pl';
<$foo2>;
};
/ I3az /
答案 2 :(得分:1)
使用shell脚本(例如,Windows上的.bat
文件)来运行各种Perl脚本并组合它们的输出是解决问题的一种方法。但是,我通常发现Perl本身提供了比shell脚本更强大,更灵活的环境。要以这种方式使用Perl,首先要了解system和exec命令。
例如:
# In hello.pl
print "Hello\n";
# In world.pl
print "World\n";
# In hello_world.pl.
use strict;
use warnings;
system 'perl hello.pl > hello_world.txt';
system 'perl world.pl >> hello_world.txt';
答案 3 :(得分:1)
您也可以使用以下代码
file1.pl
use strict;
use warnings;
open (FH,">file") or die "$! can't open";
print FH "WELCOME\n";
file2.pl
use strict;
use warnings;
open (FH,">>file") or die "$! can't open";
print FH "WELCOME2\n";
文件内容为
WELCOME
WELCOME2
答案 4 :(得分:0)
如果您知道要在其他脚本中执行的脚本也是Perl,则应使用do EXPR
(https://perldoc.perl.org/functions/do.html)。
这将在运行的perl进程的上下文中执行文件EXPR
的内容,并使您免于启动新的cmd.exe和perl.exe实例。
hello.pl:
print "Hello";
do "world.pl";
wordl.pl:
print "World";