File 尝试输出两个文件的所有可能组合
您好,我正在尝试制作一个perl脚本,它将获取2个文件(包含单词)并将它们连接到每个可能的组合中 例如 文件1包含:File 尝试输出两个文件的所有可能组合,file,compare,File,Compare,您好,我正在尝试制作一个perl脚本,它将获取2个文件(包含单词)并将它们连接到每个可能的组合中 例如 文件1包含: make move on out 文件2包含: make move on out 输出文件应为: makeon makeout moveon moveout 理想情况下,最好将文件的顺序颠倒过来 onmove 超过 onmake 胜过 下面是我尝试过的几件事,但我是一个初学者,永远无法获得正确的输出 !
make
move
on
out
文件2包含:
make
move
on
out
输出文件应为:
makeon
makeout
moveon
moveout
理想情况下,最好将文件的顺序颠倒过来
onmove
超过
onmake
胜过
下面是我尝试过的几件事,但我是一个初学者,永远无法获得正确的输出
! /usr/bin/perl
open (OUT, '> output.txt');
use strict;
use warnings;
use Data::Dump qw(dump);
my @in = qw(aaa bbb ccc ddd);
my @list;
while(my $first = shift @in) {
last unless @in;
my $rest = join'\n', @in;
push @list, glob("{$first}{$rest}");
}
dump @list;
# Some other attempts
my @karray;
my @sarray;
my @testarr = (@sarray)+@karray;
my $stemplate = "test1.txt";
my $ktemplate = "test2.txt";
my $outtemplate = "output.txt";
sub pushf2a {
open(IN, "<$_[0]") || die;
while (<IN>) {
if ($_[0] eq $stemplate) {
push (@sarray,@karray,$_);
} else {
push (@karray,@sarray,$_);
}
}
close(IN) || die $!;
}
&pushf2a($stemplate, @sarray);
&pushf2a($ktemplate, @karray);
print OUT @sarray, @karray;
print OUT @list;
close (OUT);
/usr/bin/perl
打开(OUT,'>output.txt');
严格使用;
使用警告;
使用数据::转储qw(转储);
my@in=qw(aaa bbb ccc ddd);
我的@list;
而(我的$first=shift@in){
最后,除非@in;
my$rest=加入'\n',@in;
push@list,glob(“{$first}{$rest}”);
}
dump@list;
#其他一些尝试
我的@karray;
我的@sarray;
我的@testarr=(@sarray)+@karray;
my$stemplate=“test1.txt”;
my$ktemplate=“test2.txt”;
my$outtemplate=“output.txt”;
副推力F2A{
打开(在“中)可能有更巧妙的方法,但这很简单:
#!/usr/bin/env perl
use Tie::File;
use strict;
use warnings;
tie my @a, 'Tie::File', $ARGV[0] or die "$ARGV[0]: $!\n";
tie my @b, 'Tie::File', $ARGV[1] or die "$ARGV[1]: $!\n";
foreach my $w( @b ) { print "$w$_\n" foreach( @a )}
使用两个输入文件作为参数调用此脚本。例如,如果将上述内容放入名为“combine”的文件中并使其可执行:
./combine file1.txt file2.txt