如何在 Perl 中从多行字符串创建集合?
How do I create a set from a multi-line string in Perl?
我有一个多行字符串作为输入。例如:my $input="a\nb\nc\nd"
我想根据这个输入创建一个集合,以便我可以确定集合中是否存在字符串向量中的元素。我的问题是,如何在 Perl 中从多行字符串创建集合?
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'
];
@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 );
}
我有一个多行字符串作为输入。例如:my $input="a\nb\nc\nd"
我想根据这个输入创建一个集合,以便我可以确定集合中是否存在字符串向量中的元素。我的问题是,如何在 Perl 中从多行字符串创建集合?
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'
];
@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 );
}