Существуют разные типы оболочек.-Разница между оболочкой входа и обычной оболочкой. -Оболочка входа?(ищите .bashrc
деталь)
Не все из них являются источниками .bashrc
, поэтому work.sh
не являются источниками.
Чтобы решить вашу проблему, вам нужно экспортировать функцию, чтобы сделать ее доступной для подоболочки.
Могу ли я «экспортировать» функции в bash?
myfun() {
echo "Hello!"
}
export -f myfun
--
vim
:!myfun
работает!
Как отмечено в комментарии Ракеша Шармы , синтаксис для доступа к анонимному массиву как элементу хеша @{ $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";
}
См., например,
Я никогда не использовал Perl, но, судя по тому, что я видел в Интернете, для строки 4 вашего кода вам не нужно делать @words = split(' ', $_);
или@words = split;
Может быть, вместо этого попробуйте это:
while (<>){
++$line_num;
for $w (split){ #Changed this
push @{$h{$w}}, $line_num; #Changed this
}
}