[perl-win32-gui-users] not a CODE reference

2003-11-30 Thread YANDEX
Hello perl-win32-gui-users,

  I have a small window with many checkboxes. I need to ask every
  checkbox, so I:
  for(0..((keys %PLZ) - 1)){
  if($Window->(sort keys %PLZ)[$_]->Checked == 1){
  print $PLZ{(sort keys %PLZ)[$_]}." is checked\n";
  }

  this dont works, the error: "Not a CODE reference at ..."

  perldiag say to me: "(W overload) The second (fourth, sixth, ...)
  argument of overload::constant needs to be a code reference.
  Either an anonymous subroutine, or a reference to a subroutine."
  
  so I write workaround:

  for(0..((keys %PLZ) - 1)){
   $Ch = (sort keys %PLZ)[$_];
   if($ModalWindow->$Ch->Checked == 1){
   print $PLZ{(sort keys %PLZ)[$_]}." is checked\n";
  }

  can somebody tell me how can I do this without using intermediate
  variable ($Ch) ??
-- 
Best regards,
Pavel mailto:[EMAIL PROTECTED]




Re: [perl-win32-gui-users] not a CODE reference

2003-11-30 Thread Laurent ROCHER
Hi,

$Window or $ModalWindow and you miss a } for if ?

For error: "Not a CODE reference at ...", i don't know exacly what append.
But it's probably because you need to add { } around (sort keys %PLZ)[$_].

for(0..((keys %PLZ) - 1)){
   if($Window->{(sort keys %PLZ)[$_]}->Checked == 1){
   print $PLZ{(sort keys %PLZ)[$_]}." is checked\n";
   }
}

I'm not sure understand your data structure.
I suppose keys in %PLZ is checkbox name and associate value is caption.
Something like that :

%PLZ = (
"ChechBox1" => "Option 1",
"ChechBox2" => "Option 2",
);

It's probably better to do something like that :

foreach (sort keys %PLZ) {
if($Window->{$_}->Checked == 1) {
print $PLZ{$_}." is checked\n";
}
}

Laurent

- Original Message - 
From: "YANDEX" <[EMAIL PROTECTED]>
To: 
Sent: Sunday, November 30, 2003 5:37 PM
Subject: [perl-win32-gui-users] not a CODE reference


> Hello perl-win32-gui-users,
> 
>   I have a small window with many checkboxes. I need to ask every
>   checkbox, so I:
>   for(0..((keys %PLZ) - 1)){
>   if($Window->(sort keys %PLZ)[$_]->Checked == 1){
>   print $PLZ{(sort keys %PLZ)[$_]}." is checked\n";
>   }
> 
>   this dont works, the error: "Not a CODE reference at ..."
> 
>   perldiag say to me: "(W overload) The second (fourth, sixth, ...)
>   argument of overload::constant needs to be a code reference.
>   Either an anonymous subroutine, or a reference to a subroutine."
>   
>   so I write workaround:
> 
>   for(0..((keys %PLZ) - 1)){
>$Ch = (sort keys %PLZ)[$_];
>if($ModalWindow->$Ch->Checked == 1){
>print $PLZ{(sort keys %PLZ)[$_]}." is checked\n";
>   }
> 
>   can somebody tell me how can I do this without using intermediate
>   variable ($Ch) ??
> -- 
> Best regards,
> Pavel mailto:[EMAIL PROTECTED]
>