如何在Perl中从多行字符串创建集合?

时间:2015-01-07 21:53:33

标签: perl

我有一个多行字符串作为输入。例如:my $input="a\nb\nc\nd"

我想从这个输入创建一个集合,这样我就可以确定集合中是否存在来自字符串向量的元素。我的问题是,如何在Perl中用多行字符串创建一个集合?

2 个答案:

答案 0 :(得分:1)

split可用于将行存储到数组变量中:

use warnings;
use strict;
use Data::Dumper;

my $input = "a\nb\nc\nd";
my @lines = split /\n/, $input;

print Dumper(\@lines);

__END__

$VAR1 = [
          'a',
          'b',
          'c',
          'd'
        ];

答案 1 :(得分:0)

@toolic是对的; split可以抓住输入。

但如果您想稍后检查设置成员资格,您可能希望更进一步并将这些值放入哈希值。像这样:

use warnings;
use strict;

my $input = "a\nb\nc\nd";
my @lines = split /\n/, $input;

my %set_contains;

# set a flag for each line in the set
for my $line (@lines) {
    $set_contains{ $line } = 1;
}

然后你可以像这样快速检查集合成员资格:

if ( $set_contains{ $my_value } ) {
    do_something( $my_value );
}