Чтобы сэкономить память, можно воспользоваться
%allhash = (%hash1, %hash2);
Чтобы сэкономить память, можно воспользоваться таким кодом:
%hash=();
while (($key, $values) = each(%hash1)){
$hash{$key} = $values;
}
while (($key, $values) = each(%hash2)){
$hash{$key} = $values;
}
Пример работы с хэшем и базой данных из (cм. ответ):
VS> Скажите, можно ли ввести в dbm-базу данных уже заполненный значениями
VS> хеш? Если да, то как?
%hash1=("dfadf", "dfadfd");
dbmopen (%hash, "hash", 0666);
%hash=%hash1;
dbmclose (%hash);
Как передать хэш в функцию? (см. всю дискуссию)
> PK> Вобщем то все передаеться, но использовать его нельзяю
> PK> Hа %_[0] или $_[0]{??} компилер ругаеться.
> %a;
> &f(\%a);
> sub f {
> my $a = $($_[0]){'key'};
> }
> кажется так, мог ошибится в написании. Смысл в передаче ссылки, а не значения.
Это можно сделать также:
1. Неявной передачей ссылки (использование прототипов):
sub f(\%) {
my $a=$_[0]->{'key'};
}
f(%a);
2. Передачей хэша как массива с четным числом
элементов:
sub f {
my $a={@_}->{'key'};
}
f(%a);
Пример использования хеша для транслитерации :
RK> Как сочнить такой tr/../../ (и возможно ли), чтобы
RK> "аб я" -> "abyoya"
RK> Т.е. транслитерацию сделать...
самый простой и топорный вариант - сделать хеш
с соответствиями типа я => ya сплитить строчки и заменять элементы
полученного массива на нужные. что-то на подобие:
@letters = split //, $str;
for (@letters){$_ = $hash{$_}};
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий