如何使用Perl重命名文件

时间:2017-09-05 19:35:19

标签: perl file-rename

我一直在尝试使用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();

当我运行此文件时,文件保持不变...有关如何解决此问题的任何想法?

1 个答案:

答案 0 :(得分:7)

/不是文件名的有效字符,因为它是目录分隔符。您有效地要求将当前目录中的testLog.log重命名为目录2017.log中的testLog_09/05。该目录不存在。

更改

my $date = localtime->strftime('%m/%d/%Y');

my $date = localtime->strftime('%m-%d-%Y');

更好的是,使用自然排序的格式。

my $date = localtime->strftime('%Y-%m-%d');