in reply to Porting Commands to Windows

You mention that you never see the results of your commands. If the module you are using does not have a method to help with this, e.g.
my $error = $self->message();
or something similar. You could, for development and testing purposes, use something like
$result = qx(mkdir $path);
To view results.

eval would also provide information if there are problems:
eval{$self->sys('cmd /C mkdir', '-p', "$self->{tmp}/attach")}; if ($@){ print "$@\n"; }
SC