while (my $filename = readdir(DIR)) {
next if $filename eq '.';
next if $filename eq '..';
unshift(@indexlist,$filename);
}
の部分を
foreach(sort{(split(/\-/,$a))[1] cmp (split(/\-/,$b))[1]} readdir(DIR)) {
next if $filename eq '.';
next if $filename eq '..';
unshift(@indexlist,$filename);
}
直接その部分だけ変えてみたら、こんなエラーのようなものがでました。
No such file or directory at C:\WWW\public_html\tangsten_psycology\xxregist\alli ndexout.cgi line 48.
このやり方だと、$filename自体はそのままでソートする時のみ部分的な場所を比較しているってことなんでしょうか?
だとしたら、ディレクトリとかファイルとかは、変わっていないので動く筈なんですが…。。(悪戦苦闘!)
foreach $filename (sort{(split(/\-/,$a))[1] cmp (split(/\-/,$b))[1]} readdir(DIR)) {
next if $filename eq '.';
next if $filename eq '..';
unshift(@indexlist,$filename);
}
もしくは
foreach (sort{(split(/\-/,$a))[1] cmp (split(/\-/,$b))[1]} readdir(DIR)) {
next if $filename eq '.';
next if $filename eq '..';
unshift(@indexlist,$_);
}
foreach $filename (sort{(split(/\-/,$a))[1] cmp (split(/\-/,$b))[1]} readdir(DIR)) {
next if $filename eq '.';
next if $filename eq '..';
unshift(@indexlist,$filename);
}
foreach $_(sort{(split(/\-/,$a))[1] cmp (split(/\-/,$b))[1]} readdir(DIR)) {
next if $_ eq '.';
next if $_ eq '..';
unshift(@indexlist,$_);
}
ですよね。変数を指定しなかったら、$_だった筈!
なんか、わかるようでわからない…悶々中の僕であります。