class X::Proc::Async::OpenForWriting isException {}

When a Proc::Async object is opened only for reading from the external program (no :w passed to open), and a write operation such as write, print and say is performed, an exception of type X::Proc::Async::OpenForWriting is thrown:

my$proc=Proc::Async.new("echo"); $proc.start; $proc.say(42); CATCH { default { put .^name,': ', .Str } }; # OUTPUT: «X::Proc::Async::OpenForWriting: Process must be opened for writing with :w to call 'say'␤»

To fix that you can use writable commands with :w flag:

my$prog=Proc::Async.new(:w,'cat'); $prog.stdout.tap( ->$str { print$str; }); my$promise=$prog.start; await$prog.say('foo'); $prog.close-stdin; await$promise;

Methods§

method method§

methodmethod(X::Proc::Async::OpenForWriting:D:)

Returns the method name that was called and which caused the exception.

close