我编写了一个 PowerShell 脚本,它生成 100 个带有随机时间戳的文件:
$date_min = get-date -year 1989 -month 7 -day 4
$date_max = get-date
for( $i = 0; $i -le 100; $i++ )
{
$file = $i.ToString() + ".txt"
echo ">=|" > $file
$a = get-item $file
$time = new-object datetime( get-random -min $date_min.ticks -max $date_max.ticks)
$a.CreationTime = $time
$a.LastWriteTime = $time
$a.LastAccessTime = $time
}
使用 Perl,我试图根据上次修改时间对这些文件进行排序,如下所示:
use strict;
use warnings;
my $dir = "TEST_DIR";
my @files;
opendir( DIR , $dir ) or die $!;
# Grab all the files in a directory
while( my $file = readdir(DIR) )
{
next if(-d $file); # If the "file" is actually a directory, skip it
push( @files , $file );
}
my @sorted_files = sort { -M $b <=> -M $a } @files; # Sort files from oldest to newest
但是,当我运行我的代码时,我得到:
在 .\dir.pl 第 31 行的数值比较 (<=>) 中使用未初始化的值。
现在,如果我针对不是使用我的 powershell 脚本随机生成的文件尝试此代码,它就可以正常工作。我很难弄清楚为什么它不适用于这些随机生成的文件。难道我做错了什么?