Size: a a a

2021 April 01

AP

Anton Petrusevich in Modern::Perl
это слайс хеша что ли получается? начиная с перл 5.20 появился
источник

AP

Anton Petrusevich in Modern::Perl
чот я задумался как это "работает"
источник

AP

Anton Petrusevich in Modern::Perl
не, не "работает":
$ /usr/bin/perl -MData::Dumper -E '%i->{a}->{b} = "c"; say Dumper \%i'
Can't use a hash as a reference at -e line 1.
источник

AP

Anton Petrusevich in Modern::Perl
а хеш слайсы не бывают эльвелью
источник

ОМ

Ольга Мальцева... in Modern::Perl
print Dumper(%interfaces->{$port}->{'comp_cfg'});
print Dumper(%interfaces->{$pair_port}->{'comp_cfg'});

отдает например

$VAR1 = {
         'port vlan-mapping' => 'port vlan-mapping vlan 99 map-vlan 485',
         'loopback-detect packet' => 'loopback-detect packet vlan 4024',
       ...
       };
$VAR1 = {
         'port vlan-mapping' => 'port vlan-mapping vlan 99 map-vlan 485',
         'loopback-detect packet' => 'loopback-detect packet vlan 4024',
        ...
       };


на питоне я бы просто сделала
if (interfaces[port]['comp_cfg']).keys() == (interfaces[pair_port]['comp_cfg']).keys():
   тут действия если ок
else:
   тут отдача ошибки по ключам

и дальше фором по ключам сравнение на одинкаовость значений и если нет отдача ошибки по значениям
источник

c

cono in Modern::Perl
~ perl -MData::Dumper -E 'my %h; @h{"a", "b"} = (2) x 2; say Dumper \%h'
$VAR1 = {
         'a' => 2,
         'b' => 2
       };
источник

AP

Anton Petrusevich in Modern::Perl
cono
~ perl -MData::Dumper -E 'my %h; @h{"a", "b"} = (2) x 2; say Dumper \%h'
$VAR1 = {
         'a' => 2,
         'b' => 2
       };
это не хеш слайс
источник

ОМ

Ольга Мальцева... in Modern::Perl
но в перле встретила с этим сложности
источник

c

cono in Modern::Perl
~ perl -E 'my %h = "a" => 52; my %h2 = "a" => 42; say keys(%h) ~~ keys(%h2)'
Smartmatch is experimental at -e line 1.
1
источник

AP

Anton Petrusevich in Modern::Perl
cono
~ perl -E 'my %h = "a" => 52; my %h2 = "a" => 42; say keys(%h) ~~ keys(%h2)'
Smartmatch is experimental at -e line 1.
1
smartmatch плохая идея
источник

AP

Anton Petrusevich in Modern::Perl
Ольга Мальцева
но в перле встретила с этим сложности
зависит от того, надо тебе задачу решить или учебное задание
источник

AP

Anton Petrusevich in Modern::Perl
если учебное задание, то, видимо, всё надо ручками
источник

AP

Anton Petrusevich in Modern::Perl
если задачу решить, то поставить модуль, который уже всё умеет
источник

ОМ

Ольга Мальцева... in Modern::Perl
Anton Petrusevich
зависит от того, надо тебе задачу решить или учебное задание
задачу.
источник

ОМ

Ольга Мальцева... in Modern::Perl
ну в смысле реальный таск
источник

AP

Anton Petrusevich in Modern::Perl
ну, осталось только перловый синтаксис грокнуть
источник

ОМ

Ольга Мальцева... in Modern::Perl
а штатных функций сравнения ключей и значений в словарях в перле нет? только форами по каждому бегать?
источник

AP

Anton Petrusevich in Modern::Perl
грепами
источник

AP

Anton Petrusevich in Modern::Perl
$ 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'
       ];
источник

AP

Anton Petrusevich in Modern::Perl
как видишь, дифф ключей считается в одну строку
источник