From: Bruce W. <br...@mi...> - 2003-04-27 04:22:12
|
> You probably need to qualify the parameter as a scalar first. Might want > to try: > > set ${@_[0]} $state; > -or- > ${@_[0]}->set($state); > > > I have a sub that I use to turn on lights based on a number of > tests. I pass > > the sub the variables including the light to be acted on. When I try to > > perform the set I have a problem. > > > > set @_[0] $state; > > > > will not compile, BUT > > > > my $light = @_[0]; > > set $light $state; Jason was close. Try this instead: $_[0]->set($state); This is a common problem that people have in perl. You use the @xyz when you want to point to all or a slice of the list array, and use $xyz[#] when you want to point to a specific entry. @_[0] is a 'slice' with only one entry. @_[0,1] would have to entries etc. So you want $_[0] to point to the first entry. I don't know why 'set $xyz[0] $state' does not work. Seems like a perl bug. Bruce |