Программирование > Perl
Народ, подскажите
Chs:
--- Цитировать ---polo (04-04-2001 22:31):
Все равно не могу разобраться, изложу все полностью, кто знает решение напишите пожалуйста код:
#допустим имеем хеш
%hesh (
name => \'ivan \',
first name=> \'badi\',
city => \'Moskva\',
Country => \'Rossia\'
);
#далее иммее подпрограмму
sub podprog {
%hesh = &edit_hesh(%hesh); #изменяяем хеш
&other(%hesh); #выполняяем другие операции с измененым хешем хешем
}
sub edit_hesh {
#как написать эту подпрограмму так что-бы она изменила #эллементы
#name => \'ivan \',
#first name=> \'badi\',
#на
#name => \'ivan \',
#first name=> \'badi\',
#и вернула измененный хеш
}
--- Конец цитаты ---
Решение чуть выше.:):)
cj:
--- Цитировать ---polo (04-04-2001 22:31):
Все равно не могу разобраться, изложу все полностью, кто знает решение напишите пожалуйста код:
#допустим имеем хеш
%hesh (
name => \'ivan \',
first name=> \'badi\',
city => \'Moskva\',
Country => \'Rossia\'
);
#далее иммее подпрограмму
sub podprog {
%hesh = &edit_hesh(%hesh); #изменяяем хеш
&other(%hesh); #выполняяем другие операции с измененым хешем хешем
}
sub edit_hesh {
#как написать эту подпрограмму так что-бы она изменила #эллементы
#name => \'ivan \',
#first name=> \'badi\',
#на
#name => \'ivan \',
#first name=> \'badi\',
#и вернула измененный хеш
}
--- Конец цитаты ---
1. Кончай баловаться с передачей хеша по-значению.
2. Это делается так:
# Создаем ссылку на анонимный хеш. Значения полей изменить по-вкусу
my $hash = { "Name" => "Ivan", "Country" => "Russia", "City" => "Moscow" };
Main();
# Имя функции - любое :-)
sub Main
{
AlterHash($hash);
ChopHash($hash);
}
# Функция, которая что-то делает с хэшем
sub AlterHash($)
{
my $h = shift();
$h->{"Name"} = "$h->{\'Name\'}";
$h->{"City"} = "$h->{\'City\'}";
# Все. Возвращать ничего не надо, хеш уже изменен.
}
# Надеюсь, теперь все ясно?
polo:
А как в my $hesh поместить %hesh а то я написал
my $hesh = {%hesh};
и ничего.
polo:
--- Цитировать ---polo (05-04-2001 23:20):
А как в my $hesh поместить %hesh а то я написал
my $hesh = {%hesh};
и ничего.
--- Конец цитаты ---
my $hesh = keys %hesh;
polo:
Поставлю вопрос по другому:
%hesh это данные переданные из формы, требуется обработать некоторые поля (удалить хтмл теги), а потом записать результаты в файл, это делает подпрограмма которая разделяет эллементы хеша и вписывает их в файл (el1|el2|и т.д.|). Навернека здесь другое решение.
Навигация
Перейти к полной версии