in reply to Please help - problem with script on Win2K

I notice several things with your code.

First, you don't show where you actually create the $creadedir var, but from the error message

error creating \\10.1.1.5\Weblogiclogs\02091812! at service.pl line 27.

it shows that you are missing off the minutes and seconds? Is this intentional? Could this be a part of your problem?

Anyway, this is more easily done using POSIX::strftime as I've shown below.

You really should get into the habit of including $! (and on Win32 boxes where the operation involves calls to the OS, $^E, see perlvar) in your error messages, it will usually tell you WHY things went wrong, as well as that they have.

As talexb says above the perlfunc:mkdir function would be better than that system call, and if your log files are currently on the same drive as their new directory, then using the built-in function perlfunc:rename will move them to their new home much more efficiently than shelling to the system move command.

use Win32::Service; my $filedir = "\\\\10.1.1.5\\Weblogiclogs"; my $IWlogs = "\\\\10.1.1.5\\Weblogiclogs\\*.log*"; # Get Local Time and Create folder based on local time stamped # This is a much easier way of creating your directory name my $createdir = strftime( '%y%d%e%H%M%S', localtime); # Create folder based on local time obtained above # - This is where the script is erroring out at.... if(!-e $createDir) { # NOTE: The $! & $^E will tell you WHY it failed. mkdir $createdir or die "Couln't create $createdir because $!($^E) +\n"; } # move logs files to new created directory named after # the local time. @args = ( "move" , $IWlogs , $createDir ) ; system( @args ) == 0 or die "error moving $IWlogs reason $!($^E)"; # +NOTE: $! & $^E

Cor! Like yer ring! ... HALO dammit! ... 'Ave it yer way! Hal-lo, Mister la-de-da. ... Like yer ring!

Replies are listed 'Best First'.
Re: Re: Please help - problem with script on Win2K
by Anonymous Monk on Sep 18, 2002 at 19:44 UTC
    when I tried running the script I get the following error message below. Is there something I'm missing (i.e. module..)? thanks again! D:\Perl\bin>perl -w x.pl Undefined subroutine &main::strftime called at x.pl line 6.

      Yes, you need use POSIX;. It's part of the standard distribution, so there's not installation to be done.

      Sorry! I should have mentioned it or added the line to the code.


      Cor! Like yer ring! ... HALO dammit! ... 'Ave it yer way! Hal-lo, Mister la-de-da. ... Like yer ring!
        Thanks for your help! I put in use posix; and it did something. When the script finished running I don't know where it created and took the logs file??? Is there a way I can create the time stamped folder in the current directory? I.E, (my $filedir = "\\\\10.1.1.5\\Weblogiclogs";)