从.txt文件加载单词/字符串

时间:2014-01-08 10:52:25

标签: perl

我编写了一个基本的Perl脚本,用于生成一组单词的所有可能的唯一组合:

use Algorithm::Combinatorics qw(combinations);
my $strings = [qw(GGGG CCCC TTTT AAAA)];
my $iter = combinations($strings, 2);
while (my $c = $iter->next) {
    print "@$c\n";
}

我想知道是否有人可能指出我如何从.txt文件加载字符串而不是手动添加它们(GGGG CCCC TTTT AAAA等)。我应该声明我对Perl很新。

我也想知道是否有人能解释为什么输出在单词之间包含空格:

GGGG CCCC
GGGG TTTT
GGGG AAAA
CCCC TTTT
CCCC AAAA
TTTT AAAA

这是由于我将字符串分开的方式吗?

更新:

只是为了更新RE:从.txt文件导入并把它放在这里,它可以帮助任何其他初学者,我已经写过,现在正在使用它:

open (my $data, "<", "test.txt") or die "There was a problem opening: $!";
my @primers = <$data>;
close $data;
chomp @primers;
use strict; use warnings;
use Algorithm::Combinatorics qw(combinations);
my $strings = \@primers;
my $iter = combinations($strings, 2);
while (my $c = $iter->next) {
    print "@$c\n";
}

2 个答案:

答案 0 :(得分:1)

根据建议你可以通过各种链接建议如何写入文件..!此外,你正在获得两者之间的拼写,因为你在字符串上下文中打印一个数组(称为stringfying it)

答案 1 :(得分:1)

至于你的空格:方法$iter->next似乎返回一个包含两个值的数组引用。在第一行中,即[ 'GGGG', 'CCCC' ]。如果将数组放入字符串(print "@foo")中,则会对其进行字符串化。这意味着,所有元素将连接成一个字符串。 Perl使用变量$"来进行连接。

print "@$c\n";

与说法相同:

print join( $", @{ $c }) . "\n";

默认情况下,$"包含一个空格()。


您可以在perldoc perlvar$"上阅读。以下是它的说法:

  

$"将数组或数组切片插入到a中   双引号字符串或类似的上下文,例如/.../   元素由此值分隔。默认是一个空格。例如,   这样:

print "The array is: @array\n";
     

相当于:

print "The array is: " . join($", @array) . "\n";
     

助记符:在双引号上下文中工作。