Size: a a a

2021 April 01

AP

Anton Petrusevich in Modern::Perl
не то чтобы это прямо так сильно функции требовало
источник

ОМ

Ольга Мальцева... in Modern::Perl
Anton Petrusevich
$ perl -MData::Dumper -E '%i=(s=>1,b=>3); %j=%h; %k=(b=>4,c=>5); @diff = (grep {!exists $i{$_}} keys %j, grep {!exists $j{$_}} keys %i); say Dumper \@diff; @diff = (grep {!exists $i{$_}} keys %k, grep {!exists $k{$_}} keys %i); say Dumper \@diff;  '
$VAR1 = [];

$VAR1 = [
         'c'
       ];
спасибо!
источник

VV

Vladimir Varlamov in Modern::Perl
а так сработает? if ( (sort keys %a) eq (sort keys %b) )
источник

AP

Anton Petrusevich in Modern::Perl
ну попробуй и покажи
источник

AP

Anton Petrusevich in Modern::Perl
я бы так писать не стал, мне лень
источник

RL

Roman Lugovkin in Modern::Perl
Vladimir Varlamov
а так сработает? if ( (sort keys %a) eq (sort keys %b) )
тогда уж join(' ', sort keys %a)
источник

RL

Roman Lugovkin in Modern::Perl
и сравнивать как строки
источник

AP

Anton Petrusevich in Modern::Perl
а если в ключах есть слова с пробелами?
источник

AP

Anton Petrusevich in Modern::Perl
такое себе, в общем
источник

RL

Roman Lugovkin in Modern::Perl
Anton Petrusevich
а если в ключах есть слова с пробелами?
ну я в общем, а так зависит от контекста
источник

AP

Anton Petrusevich in Modern::Perl
Roman Lugovkin
ну я в общем, а так зависит от контекста
ну, бывает, что проканает, но зачем, когда пара грепов работает быстрее и надёжнее
источник

RL

Roman Lugovkin in Modern::Perl
Anton Petrusevich
ну, бывает, что проканает, но зачем, когда пара грепов работает быстрее и надёжнее
ну да, такие вещи вынесены обычно в стандартную либу проекта, но было бы приятно если б были операции со множествами на уровне языка, а не ~~
источник

AP

Anton Petrusevich in Modern::Perl
да блин, мне до сих пор за смартмэтч обидно :)
источник

SZ

Sergey Zhmylove in Modern::Perl
А что нужно сделать-то? Я не понял, что там надо сравнить
источник

AP

Anton Petrusevich in Modern::Perl
Sergey Zhmylove
А что нужно сделать-то? Я не понял, что там надо сравнить
ключи хешей совпадают или нет
источник

SZ

Sergey Zhmylove in Modern::Perl
Anton Petrusevich
ключи хешей совпадают или нет
А чем-то плохо 2 for?
источник

SZ

Sergey Zhmylove in Modern::Perl
Anton Petrusevich
$ perl -MData::Dumper -E '%i=(s=>1,b=>3); %j=%h; %k=(b=>4,c=>5); @diff = (grep {!exists $i{$_}} keys %j, grep {!exists $j{$_}} keys %i); say Dumper \@diff; @diff = (grep {!exists $i{$_}} keys %k, grep {!exists $k{$_}} keys %i); say Dumper \@diff;  '
$VAR1 = [];

$VAR1 = [
         'c'
       ];
Ну, собственно, так :)
источник

SZ

Sergey Zhmylove in Modern::Perl
По-моему, без двух циклов по ключам не обойтись, хотя можно оптимизировать, это нетрудно
источник

R

Roman in Modern::Perl
Ольга Мальцева
по идее сам хэш,
на запись к нему вот так обращаюсь
   foreach my $str_ifcfg (split(/\n/, $if_content)) {
     if ($str_ifcfg =~ m/^\s*((.*?)\s+vlan\s+(.*?))$/) {
       my $content_cfg = $1;
       my $key_cfg = $2;
       %interfaces->{$if_port}->{'comp_cfg'}->{$key_cfg} = $content_cfg;
     }
   }

работает
В начале каждого модуля ставь:
use warnings;
use strict;

Иначе Перл так и будет для тебя загадочной хренью. Без ограничений и ругани он очень многое делает "интуитивно".
источник

AP

Anton Petrusevich in Modern::Perl
Sergey Zhmylove
По-моему, без двух циклов по ключам не обойтись, хотя можно оптимизировать, это нетрудно
ну так греп и есть цикл. два грепа - два цикла.
источник