Как мне разбить строку на ключи хеша со значениями undef? - PullRequest
3 голосов
/ 22 ноября 2011

Вот моя строка:
NANA TEKA KAOE FLASK LSKK

Как мне сделать так, чтобы это выглядело так:
HASH = {NANA => undef, TEKA => undef, KAOE => undef, ...

Конечно, я всегда могсначала разделите это на массив
, затем переберите каждое значение, затем назначьте их как хеш-ключи
... но если есть более короткий / более простой способ сделать это?

Заранее спасибо!

Ответы [ 3 ]

7 голосов
/ 22 ноября 2011

Вы можете разбить строку и использовать карту для генерации выходного хэша.

my $string = "NANA TEKA KAOE FLASK LSKK";
my %hash = map { $_ => undef } split(/\s/, $string);
6 голосов
/ 22 ноября 2011

@hash{ split /\s+/, $string } = ();

2 голосов
/ 22 ноября 2011

Я сомневаюсь, что это самый лаконичный способ сделать это, но, похоже, он работает:

use warnings;
use strict;

my $string = "NAN TEKA KAOE FLASK LSKK";
my %hash = map { ($_ => undef) } split /\s+/, $string;

foreach my $key (keys %hash)
{
    printf "$key => %s\n", (defined($hash{$key})) ? $hash{$key} : "undef";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...