Link to home
Start Free TrialLog in
Avatar of matgold
matgold

asked on

How to find out which remote directories I should be in?

I'm connecting to a server thru FTP. Before I do a "cd" to a directory, I need to figure it out which directory. Every mid month the directory change, I need to know the best way of doing it.
below is like a table. The date has to be in between the from and to date, then directory will be set.

  From                           To                          directories
prev_yyyy-12-16 -> curr_yyyy-01-15 = curr_yyyy_01_report (directory)
curr_yyyy-01-16 -> curr_yyyy-02-15 = curr_yyyy_02_report (directory)
curr_yyyy-02-16 -> curr_yyyy-03-15 = curr_yyyy_03_report (directory)
curr_yyyy-03-16 -> curr_yyyy-04-15 = curr_yyyy_04_report (directory)
curr_yyyy-04-16 -> curr_yyyy-05-15 = curr_yyyy_05_report (directory)
curr_yyyy-05-16 -> curr_yyyy-06-15 = curr_yyyy_06_report (directory)
curr_yyyy-06-16 -> curr_yyyy-07-15 = curr_yyyy_07_report (directory)
curr_yyyy-07-16 -> curr_yyyy-08-15 = curr_yyyy_08_report (directory)
curr_yyyy-08-16 -> curr_yyyy-09-15 = curr_yyyy_09_report (directory)
curr_yyyy-09-16 -> curr_yyyy-10-15 = curr_yyyy_10_report (directory)
curr_yyyy-10-16 -> curr_yyyy-11-15 = curr_yyyy_11_report (directory)
curr_yyyy-11-16 -> curr_yyyy-12-15 = curr_yyyy_12_report (directory)
Avatar of Adam314
Adam314

I'm assuming prev_yyyy and curr_yyyy should be replaced by the previous or current 4-digit year.  Let me know if that isn't the case.

my @now = localtime();
$now[4]++;
$now[5]+=1900;
 
if($now[3] >= 16) {
	$now[4]++;
	if($now[4]>12) {
		$now[5]++;
		$now[4]=0;
	}
}
my $directory = sprintf("%4d_%02d_report", $now[5], $now[4]);
print "directory=$directory\n";

Open in new window

Avatar of matgold

ASKER

if date is between 2008-12-16 -> 2009-01-15
then dir should = 2009_01_report

the way it is now, it end up with 2009_00_report
Avatar of matgold

ASKER

ok, I changed $now[4]=0;
to $now[4]=01;
Avatar of matgold

ASKER

on the directory name, instead of 2009_00_report
I need to change it to 2009_00.report, with the dot.
when I do that, it mess up the
my $directory = sprintf("%4d_%02d.report", $now[5], $now[4]);

#To simulate other dates:
#  Add to your script:  use Time::Local;
#  pass timelocal(sec,min,hour,day,month-1,year-1900) to localtime
#eg: my @now = localtime(timelocal(0, 0, 0, 18, 11, 108)); #18-dec-2008
my @now = localtime();
$now[4]++;
$now[5]+=1900;
 
if($now[3] >= 16) {
        $now[4]++;
        if($now[4]>12) {
                $now[5]++;
                $now[4]=1;
        }
}
my $directory = sprintf("%4d_%02d.report", $now[5], $now[4]);
print "directory=$directory\n";

Open in new window

Avatar of matgold

ASKER

I have a case where the directory is  
%4d_AP_%02d_abc:[DATA.%4d_AP_%02d.DAILY_REPORTS]

inside the bracket, the %4d becomes "   0" and %02d becomes "00"
ASKER CERTIFIED SOLUTION
Avatar of Adam314
Adam314

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of matgold

ASKER

excellent!   Thank You Sir