如何使用 Perl 重命名文件
How to rename a file using Perl
在过去的一个小时里,我一直在尝试使用 perl 重命名一个文件。我一直在研究并尝试了一切,但没有任何效果。如何使用 perl 重命名文件?这是我的脚本:
use strict;
use warnings;
use Time::Piece;
use File::Copy qw(move);
# Open the log file
my $log_file = 'testLog.log';
open my $log_fh, '<', $log_file or die "Could not open file $log_file:
$! +";
# Create New File
my $new_log_file = 'testLog.log';
# My file size (bytes)
my $logFileSize = -s $log_file;
# My file size (Mb)
my $logFileSizeMB = $logFileSize / 1000000;
# File size limit
my $fileSizeLimit = 100;
# Get Date
my $date = localtime->strftime('%m/%d/%Y');
# New File Name
my $newFileName = "testLog_$date.log";
sub main {
if ($logFileSizeMB > $fileSizeLimit) {
close $log_fh or die "Could not close file $log_file: $!";
#print "$newFileName\n";
rename("testLog.log", "testLog_$date.log") || die ("Error Renaming
File");
#open my $new_log_fh, '>', $new_log_file or die "Could not open file
$new_log_file: $! +";
#close $new_log_fh or die "Could not close file $new_log_file: $!";
print "New log file created successfully!";
} else {
print "File size is under $fileSizeLimit";
}
exit(0);
}
main();
当我运行这个文件保持不变...关于如何解决这个问题有什么想法吗?
/
不是文件名的有效字符,因为它是目录分隔符。您实际上要求将当前目录中的 testLog.log
重命名为目录 testLog_09/05
中的 2017.log
。该目录不存在。
改变
my $date = localtime->strftime('%m/%d/%Y');
到
my $date = localtime->strftime('%m-%d-%Y');
更好的是,使用自然排序的格式。
my $date = localtime->strftime('%Y-%m-%d');
在过去的一个小时里,我一直在尝试使用 perl 重命名一个文件。我一直在研究并尝试了一切,但没有任何效果。如何使用 perl 重命名文件?这是我的脚本:
use strict;
use warnings;
use Time::Piece;
use File::Copy qw(move);
# Open the log file
my $log_file = 'testLog.log';
open my $log_fh, '<', $log_file or die "Could not open file $log_file:
$! +";
# Create New File
my $new_log_file = 'testLog.log';
# My file size (bytes)
my $logFileSize = -s $log_file;
# My file size (Mb)
my $logFileSizeMB = $logFileSize / 1000000;
# File size limit
my $fileSizeLimit = 100;
# Get Date
my $date = localtime->strftime('%m/%d/%Y');
# New File Name
my $newFileName = "testLog_$date.log";
sub main {
if ($logFileSizeMB > $fileSizeLimit) {
close $log_fh or die "Could not close file $log_file: $!";
#print "$newFileName\n";
rename("testLog.log", "testLog_$date.log") || die ("Error Renaming
File");
#open my $new_log_fh, '>', $new_log_file or die "Could not open file
$new_log_file: $! +";
#close $new_log_fh or die "Could not close file $new_log_file: $!";
print "New log file created successfully!";
} else {
print "File size is under $fileSizeLimit";
}
exit(0);
}
main();
当我运行这个文件保持不变...关于如何解决这个问题有什么想法吗?
/
不是文件名的有效字符,因为它是目录分隔符。您实际上要求将当前目录中的 testLog.log
重命名为目录 testLog_09/05
中的 2017.log
。该目录不存在。
改变
my $date = localtime->strftime('%m/%d/%Y');
到
my $date = localtime->strftime('%m-%d-%Y');
更好的是,使用自然排序的格式。
my $date = localtime->strftime('%Y-%m-%d');