Я работаю над проектом для себя, и у меня возникла проблема с передачей ха sh в подпрограмму. На самом деле есть несколько подпрограмм, но я попытался сократить их до минимума. Я понимаю, что% md c - это глобальное ха sh, поэтому мне не нужно передавать его всем подпрограммам, которые у меня есть, но я бы предпочел, чтобы это выходило из привычки. Хотя приведенный ниже фрагмент кода работает, кажется, что он может быть чище.
В любом случае, часть, которая заставила меня задуматься о том, что должен быть лучший способ, - это строки:
%mdc_def = mysub(\%mdc);
%mdc = %$mdc_def;
... глупо для меня, но я не нахожу способ сделать эти две строки просто одной ... что-то вроде (даже если это плохой синтаксис):
%mdc = %mysub(\%mdc);
Тогда, если бы у меня был mysub2, который также должен был бы иметь, что sh Я должен был бы сделать то же самое двухстрочное перемешивание в этой подпрограмме также. Это просто грязно.
Вот фрагмент, над которым я работаю:
use strict;
use warnings;
my %mdc = ();
my $mdc_def;
$mdc{abc} = 123;
$mdc{cde} = 234;
foreach (sort keys (%mdc)) { print "before $_ = $mdc{$_}\n"; }
$mdc_def = mysub(\%mdc);
%mdc = %$mdc_def;
foreach (sort keys (%mdc)) { print " after $_ = $mdc{$_}\n"; }
sub mysub {
my ($mdc_def) = @_;
my %m = %$mdc_def;
$m{def} = 345;
$m{efg} = 456;
return \%m;
}
Заранее спасибо.