Как преобразовать строку в хэш-массив в Perl?

Существуют разные типы оболочек.-Разница между оболочкой входа и обычной оболочкой. -Оболочка входа?(ищите .bashrcдеталь)

Не все из них являются источниками .bashrc, поэтому work.shне являются источниками.

Чтобы решить вашу проблему, вам нужно экспортировать функцию, чтобы сделать ее доступной для подоболочки.

Могу ли я «экспортировать» функции в bash?

myfun() {
    echo "Hello!"
}

export -f myfun

--

vim
:!myfun

работает!

1
28.07.2020, 13:25
2 ответа

Как отмечено в комментарии Ракеша Шармы , синтаксис для доступа к анонимному массиву как элементу хеша @{ $h{$w} }. Так например:

#!/usr/bin/perl -w

while(<>){
    for my $w (split) {
        push @{ $h{$w} }, $.;
    }
}
for my $k (keys %h) {
    print "$k:\t", "@{ $h{$k} }\n";
}

См., например,

2
18.03.2021, 23:16

Я никогда не использовал Perl, но, судя по тому, что я видел в Интернете, для строки 4 вашего кода вам не нужно делать @words = split(' ', $_); или@words = split;

Может быть, вместо этого попробуйте это:

while (<>){
  ++$line_num;
  for $w (split){              #Changed this
    push @{$h{$w}}, $line_num;  #Changed this
  }
}
0
18.03.2021, 23:16

Теги

Похожие вопросы