Harry Putnam wrote:

> I'm not used to writing perl scripts on windows.  I'm having a
> problem where a system call dies but still performs the command.
> I don't think I understand how exit status is checked.
>
> my $target = "E:/some_dir/another_dir";
> system("mkdir  $target") or die "Can't mkdir $target: $!";
>
> The script stops at the `or die' but looking in E:/ I see `dir' has
> been created.  Also the error ouput ($!) has no value.
>
> I get this error:
> Can't mkdir E:/some_dir/another_dir  At: blah blah line 23
>
> So the command didn't really fail but perl thinks it did.
>
> May be notable that the script is running on C: and the target is on E:

I'd suggest taking John's advice, and using native Perl functions.  OTOH, you
could also try:

system("md  $target") and die "Can't mkdir $target:";

Which would provide the effect you are seeking.

Greetings! E:\d_drive\perlStuff>perl -w
my $target = 'test';
system("mkdir $target") and die "Can't mkdir $target";
^Z
A subdirectory or file test already exists.
Can't mkdir test at - line 2.

Note that $! is not usable, and may be counerproductive, in this context:

Greetings! E:\d_drive\perlStuff>perl -w
my $target = 'test';
system("mkdir $target") and die "Can't mkdir $target: $!";
^Z
A subdirectory or file test already exists.
Can't mkdir test: No such file or directory at - line 2.

Joseph



-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to