Damian Conway writes: > Micholas Clarke asked: > > > If a subroutine explicitly needs access to its invocant's topic, what is so > > wrong with having an explicit read-write parameter in the argument list that > > the caller of the subroutine is expected to put $_ in? > > Absolutely nothing. And perfectly legal. You can even call that rw parameter $_ > if you like: > > sub get($id_obj, $_ is rw) { > when "who" { return $id_obj.name } > when "choose" { return any($id_obj.features).pick } > when "all" { return $id_obj.features } > } > > for «name choose all» { > print get($obj, $_); > } >
Just ( my ) terminology clean-up : in this example sub{ } is implicit topicalizer ( it does not set $_ explicitly ) , and you are setting $_ for perl . that's why you can use "when" . ??? is this valid ? (morning() is function that analyse stringifyed time ) #!/usr/bin/perl -w when ~time ~~ &morning { print "good morning" } __END__ and also #!/usr/bin/perl -w $_ = ~time when &morning() { print "good morning" } __END__ arcadi .