Forum Webscript.Ru
Программирование => Perl => Тема начата: DartSidius от 24 Ноября 2006, 05:47:07
-
Есть например хэш
%hash = (
"text" => {
type=>"".&get_types(%hash)."",
name="text"
},
"textarea" => {
type=>"".&get_types(%hash)."",
name="textarea"
}
);
sub get_types {
my %get_types = @_;
my $keys = "";
foreach(sort keys %get_types) {
if(exists($get_types{$_}) {my $keys .= "$_;"}
}
return $keys;
}
собственно с помощью функции get_types должны изыматься ключи хэша, но хэш не передаётся в функции...я так понимаю это из-за того что он передаётся из самого себя...может как то можно решить?
-
ссылку передавай и будет тебе щастье (с)
Кстати, а в одной теме нельзя все эти вопросы задавать, зачем плодить?
-
NeoNox:
ссылку передавай и будет тебе щастье (с)
э...т.е. вот так get_types(\\%hash)
а в sub\'e считывать как?...\\@_?
NeoNox:
Кстати, а в одной теме нельзя все эти вопросы задавать, зачем плодить?
Почему же...можно конечно...но вопросы разные, вдруг кто-то будет искать...и не будет повторных тем плодить
о и ещё...А МОЖНО КАК-НИБУДЬ УЗНАТЬ КЛЮЧ ПОСЛЕДНЕГО ЭЛЕМЕНТА ХЭША? (только не алгоритм...его то я сделал...может как-нибудь по простому в перле можно?)
-
%h = (aaa=>1, bbb=>2, ccc=>3);
get_types(\\%h);
sub get_types
{
for (keys %{$_[0]})
{
print "$_ => ${$_[0]}{$_} \\n";
}
}
Ну или красивее обернуть без переменных по умолчанию.
В хеше нет последнего элемента, ровно как и первого, это несортированный список, не путать с массивом.
-
NeoNox:
В хеше нет последнего элемента, ровно как и первого, это несортированный список, не путать с массивом.
точно...затипил :)
-
NeoNox:
for (keys %{$_[0]})
{
print "$_ => ${$_[0]}{$_} \\n";
}
}
вот это, кстати не работает
-
Работает DB<1> %h = (aaa=>1, bbb=>2, ccc=>3)
DB<2> sub get_types{for (keys %{$_[0]}){print "$_ => ${$_[0]}{$_} \\n"; }}
DB<3> get_types(\\%h)
bbb => 2
aaa => 1
ccc => 3
-
use Data::Dumper;
%hash = ( "text" => {
type=>&get_types(\\%hash),
name=>"text"
},
"textarea" => {
type=>&get_types(\\%hash),
name=>"textarea"
}
);
print Dumper(%hash);
sub get_types
{
my %get_types = %{$_[0]};
my $keys;
foreach (sort keys %get_types) {
if($get_types{$_})
{
$keys .= $_
}
}
return $keys;
}
С логикой работы программы чувствую не то что ты ожидаешь ;)