Что у меня есть: Чтобы уточнить, у меня в настоящее время есть основная функция, которая указывает исходный каталог и целевой каталог архива. В конце каждого месяца данные за последний месяц должны быть перемещены в каталог архива. Я все понял, и хорошо, и вниз. Подпрограмма — это то, что выбирает местное время с помощью функции localtime, а затем, после проверки нескольких условий, она возвращает предыдущий месяц и год в качестве имени новой папки в каталоге архива.
Что мне нужно: у меня есть тестовая настройка в подпрограмме, так что когда $test = 1, тест запускается и указывает уникальный год и месяц, которые я могу ввести, тогда как когда test = 0, тест не запускается и код работает нормально. Я хочу иметь возможность писать имя файла в командной строке вне кода и иметь какую-то инициацию, чтобы запустить тест или нет (например, perl -e archive.pl 1 для запуска теста и perl -e arhcive.pl 0 для запуска кода в обычном режиме).
Я новичок в Perl, но вот моя подпрограмма:
sub dateDirectory {
my $lt = localtime(); # establish a variable lt for the localtime (includes, sec, min, hour, mday, mon, year)
my $year = $lt->year+1900; # establish a variable year and add 1900 to it as it prints only 100+ value
my $mon = $lt->mon+1; # establish a variable mon for month and add 1 as it is a zero-indexed language
my $test = 1; # establish the test variable to run a unit test if test = 1 and don't run it if test = 0
if ($test == 1) {
$year = 2005;
$mon = 3;
}
my $prev_mon = $mon - 1;
my $prev_year = $year - 1;
my $prev_yearmonth = "year$prev_mon";
if ($mon == 1) {
$prev_mon = 12;
$year = $prev_year;
$prev_yearmonth = "$year$prev_mon";
}
my $prev_monlength = length($prev_mon);
if ($prev_monlength == 1) {
$prev_yearmonth = sprintf "%d%02d", $year, $prev_mon;
}
return ($prev_yearmonth);
}