単純なWebアプリでは、URLをファイル名またはファイルパスにマップする必要があります。
このアプリには、コアPerlディストリビューション(5.6.0以降)のモジュールにのみ依存できるという要件があります。問題は、ほとんどのファイルシステムのファイル名の長さが255に制限されていることです。別の制限は、単一のフォルダ内の約32kのサブディレクトリです。
私の解決策:
my $filename = $url;
if (length($filename) > $MAXPATHLEN) { # if filename longer than 255
my $part1 = substr($filename, 0, $MAXPATHLEN - 13); # first 242 chars
my $part2 = crypt(0, substr($filename, $MAXPATHLEN - 13)); # 13 chars hash
$filename = $part1.$part2;
}
$filename =~ s!/!_!g; # escape directory separator
信頼できますか?どうすれば改善できますか?