That is talking about the arguments for the method/subroutine call. The way you pass in $in as True, is to add `:in`
run "cat", "-n", :in, :out; The `:in` and `:out` are exactly the same as `:in(True)` `:out(True)` run "cat", "-n", :in(True), :out(True); Which is also the same as `in => True` run "cat", "-n", in => True, out => True; There is even a shortcut for `in => $in` my $in = True; my $out = True; run "cat", "-n", :$in, :$out; run "cat", "-n", in => $in, out => $out; run "cat", "-n", :in($in), :out($out); --- Basically that is a way to indicate that you are actually interested in those filehandles, and for the routine to set them up for you. On Sun, Oct 28, 2018 at 2:26 PM Xiao Yafeng <xyf.x...@gmail.com> wrote: > > I'm curious about what type of $in is on Proc class. As described in perl6doc: > $in, $out and $err are the three standard streams of the > to-be-launched program, and default to "-" meaning they inherit the > stream from the parent process. Setting one (or more) of them to True > makes the stream available as an IO::Pipe object of the same name, > like for example $proc.out. > > I mean, if $in is IO::Pipe object, how can I pass it True? > > > my IO::Pipe $bb = True; > Type check failed in assignment to $bb; expected IO::Pipe but got Bool > (Bool::True) > in block <unit> at <unknown file> line 4 > > I'm interested in the underlying mechanics of it. Please enlighten me. > > Besides, just curious, why choose '_' as default it looks strange....