Size: a a a

2020 December 17

AO

Alexander Onokhov in use Perl or die;
my ($key, $value) = split /=/, $string, 2;
источник

SZ

Sergey Zhmylove in use Perl or die;
Alexey Myshkin
Плохой ответ
А хорошего нет;)
источник

IB

Ivan Bessarabov in use Perl or die;
gibzer
Как сделать, чтобы при сплите получалось ровно столько значений, сколько задано в лимите?
То есть я хочу получить тут
perl -M'Data::Dumper' -e '@t = split(/=/, "ab", 2); print Dumper(\@t);'
вместо
$VAR1 = [
         'ab'
       ];

такое
$VAR1 = [
         'ab',
         undef
       ];
а задача ровно в том чтобы аккуратно все это в хеш сложить?
источник

A

Alexey Myshkin in use Perl or die;
Sergey Zhmylove
А хорошего нет;)
Просто хотелось бы слышать в ответ обоснованное мнение, а не просто мнение.
источник

SZ

Sergey Zhmylove in use Perl or die;
Alexey Myshkin
Просто хотелось бы слышать в ответ обоснованное мнение, а не просто мнение.
Ты у себя изменяешь массив с помощью push. Это не производительно
источник

g

gibzer in use Perl or die;
Ivan Bessarabov
а задача ровно в том чтобы аккуратно все это в хеш сложить?
Да.
Хочу получить что-то типа, только правильно.
perl -M'Data::Dumper' -e '%h = map { split(/=/, $_, 2) } split(/\s+/, "a=b c=d e=f g i=j"); print Dumper(\%h);'
$VAR1 = {
         'a' => 'b',
         'e' => 'f',
         'c' => 'd',
         'g' => 'i',
         'j' => undef
       };
источник

SZ

Sergey Zhmylove in use Perl or die;
Ivan Bessarabov
а задача ровно в том чтобы аккуратно все это в хеш сложить?
Вот-вот, плясать надо от задачи. Вероятно он там построчно парсит
источник

g

gibzer in use Perl or die;
Sergey Zhmylove
Вот-вот, плясать надо от задачи. Вероятно он там построчно парсит
Построчно, да.
источник

IB

Ivan Bessarabov in use Perl or die;
возможно, я бы делал это не сплитом, а регуляркой
источник

A

Alexey Myshkin in use Perl or die;
В строке одна пара или может быть больше?
источник

g

gibzer in use Perl or die;
Alexey Myshkin
В строке одна пара или может быть больше?
Произвольное количество.
источник

SZ

Sergey Zhmylove in use Perl or die;
gibzer
Да.
Хочу получить что-то типа, только правильно.
perl -M'Data::Dumper' -e '%h = map { split(/=/, $_, 2) } split(/\s+/, "a=b c=d e=f g i=j"); print Dumper(\%h);'
$VAR1 = {
         'a' => 'b',
         'e' => 'f',
         'c' => 'd',
         'g' => 'i',
         'j' => undef
       };
@PerlBanjoBot $ perl -M'Data::Dumper' -e 'for(split(/\s+/, "a=b c=d e=f g i=j")){my ($k, $v) = split(/=/, $_, 2); $h{$k}=$v}; print Dumper(\%h);'
источник

P

PerlBanjoBot in use Perl or die;
Sergey Zhmylove
@PerlBanjoBot $ perl -M'Data::Dumper' -e 'for(split(/\s+/, "a=b c=d e=f g i=j")){my ($k, $v) = split(/=/, $_, 2); $h{$k}=$v}; print Dumper(\%h);'
$VAR1 = {
         'a' => 'b',
         'e' => 'f',
         'g' => undef,
         'i' => 'j',
         'c' => 'd'
       };
https://PerlBanjo.com/65317e3bd5
источник

SZ

Sergey Zhmylove in use Perl or die;
Ivan Bessarabov
возможно, я бы делал это не сплитом, а регуляркой
Возможно я бы тоже это делал регуляркой. Зависит от длины строк
источник

g

gibzer in use Perl or die;
Sergey Zhmylove
Возможно я бы тоже это делал регуляркой. Зависит от длины строк
Не больше килобайта.
источник

SZ

Sergey Zhmylove in use Perl or die;
gibzer
Не больше килобайта.
Если тебе не нравится вариант выше, то можешь и регуляркой делать
источник

SZ

Sergey Zhmylove in use Perl or die;
Но это будет менее производительно
источник

g

gibzer in use Perl or die;
Понял, спасибо.
источник

SZ

Sergey Zhmylove in use Perl or die;
Если тебе хочется написать это "perlish", то тоже можно, но это не производительно, лучше так не делать
источник

g

gibzer in use Perl or die;
Sergey Zhmylove
Если тебе хочется написать это "perlish", то тоже можно, но это не производительно, лучше так не делать
echo -e "a=b\tc=d\te\tg=\ti=j" | perl -lne '%F = map { ($k, $v) = split(/=/, $_, 2); } split(/\t/); print join("\t", @F{qw(a c e g i)});'
источник