* $Bill Luebkert <[EMAIL PROTECTED]> [2005:10:28:19:49:55-0700] scribed:
<snip />

> The fact that you used the same code means nothing since 1) we seem to be
> talking apples and oranges and 2) your bat file is different.
<snip />

> Then you don't have a problem - use the forward slashes to do the mkdir.
<snip />

> NO!!!! You just said it worked with forward slashes - so use forward slashes.
> Switch the slashes *AFTER* you do the mkdir.
<snip />

> Yes - it is or you're not splaining yourself very well.
<snip />

> Beats me, but you're not.
<snip />

> You're not getting it.  Use forward slashes *ONLY* for the Perl script
> mkdir and then switch to back slashes.
<snip />

> You're doing a terrible job and I'm trying to be clearer than you are.
<snip />

> Yes, but you said it fails.  It should work cause you said it works
> with back slashes.  You're doing a terrible job of explaining your
> slashes.
<snip />

> And you said it works if ytou use slashes - so use them.
<snip />

> No - you haven't explained anything where I can understand it.  You keep
> contradicting yourself (at least that's what I'm reading).
<snip />

> Looks simple enough to me and works for me.
<snip />

> What you're not getting across is where the problem is.
> 
> You said the mkdir works with forward slashes and the bat file works
> with back slashes.  So use forward on the mkdir and back on the bat call.
> It's that simple.  Now where does it fail under those circumstances ?


One more way to explain this:

[A] Using Code #1, the Perl mkdir successfully creates $dir/$dest, and
goes on to call $prog.  $prog fails, because it will not accept $dir as
a valid directory while using forward-slashes (/).  At one trial, the
stderr returned was this:

    Invalid switch - "backup\20051028070933".

[B] Using Code #2, the Perl mkdir does *NOT* create $dir/$dest; nor does
it croak, nor does it die !?!?  Nevertheless, the Perl code goes into
$prog; but, the BAT code cannot copy files into %1\%2, because that
directory does *NOT* exist, because the Perl code somehow did *NOT*
mkdir it !?!?


I know that this is bizarre behavior.  I cannot explain it -- hence, my
series of incomprehensible posts ;<

Is this explication any clearer?


###  Code #1 : BEGIN  ####

#! /usr/bin/perl
use diagnostics;
use strict;
use warnings;

my $prog = "E:/usr/ov/bin/nvhotbackup.bat";
my $dir = 'E:/backup';

if (not -d $dir) {
    mkdir $dir or die "mkdir $dir: $! ($^E)";
}
my $dest = timestamp ();
if (not -d "$dir/$dest") {
    mkdir "$dir/$dest" or die "mkdir $dir/$dest: $! ($^E)";
}
do_prog ($prog, $dir, $dest);

exit 0;

sub do_prog {
    my ($prog, $dir, $dest) = @_;
    ###  Substitution line omitted  ###
    my $cmd = qq{$prog "$dir" $dest};
    print "CMD == ", $cmd, "\n";
    system $cmd;            # seems OK
}

sub timestamp {
    @_ = localtime ($_[0] ? shift : time);
    return sprintf "%d%02d%02d%02d%02d%02d",
        $_[5]+1900, $_[4]+1,
        $_[3], $_[2], $_[1], $_[0];
}
__END__

###  Code #1 : END  ####


###  Code #2 : BEGIN  ####

#! /usr/bin/perl
use diagnostics;
use strict;
use warnings;

my $prog = "E:/usr/ov/bin/nvhotbackup.bat";
my $dir = 'E:/backup';

if (not -d $dir) {
    mkdir $dir or die "mkdir $dir: $! ($^E)";
}
my $dest = timestamp ();
if (not -d "$dir/$dest") {
    mkdir "$dir/$dest" or die "mkdir $dir/$dest: $! ($^E)";
}
do_prog ($prog, $dir, $dest);

exit 0;

sub do_prog {
    my ($prog, $dir, $dest) = @_;
    $dir =~ s!/!\\!g;       # this one you definitely need
    my $cmd = qq{$prog "$dir" $dest};
    print "CMD == ", $cmd, "\n";
    system $cmd;            # seems OK
}

sub timestamp {
    @_ = localtime ($_[0] ? shift : time);
    return sprintf "%d%02d%02d%02d%02d%02d",
        $_[5]+1900, $_[4]+1,
        $_[3], $_[2], $_[1], $_[0];
}
__END__

###  Code #2 : END  ####


-- 
Best Regards,

mds
mds resource
877.596.8237
-
Dare to fix things before they break . . .
-
Our capacity for understanding is inversely proportional to how much
we think we know.  The more I know, the more I know I don't know . . .
--

Attachment: signature.asc
Description: Digital signature

_______________________________________________
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to