当哈希值大于128 char in perl

时间:2016-09-18 05:25:08

标签: perl cgi

我有一个包含超过128个字符的值的哈希,现在我通过nstore函数将该哈希存储在文件中。

use strict ; 
use warnings ; 
use Storable qw(store nstore retrieve);

my $hash = {

###value more than 128 char
'a.key.value.in.a.hash.that.will.be.sored.in.a.file' => 'some.value.that.is.not.getting.stored.on.the.remote.server.strange.enough.if.length.is.greate.than.128.char.may.some.perl.issueee'
};

my $temp_dir = 'C:\TEMP\log'; 

nstore($hash, "$temp_dir/temp_file");

现在我正尝试通过cgi上传功能从本地服务器上传到远程服务器。

通过nstore生成的本地计算机上的

http://localhost/some/api?file=file

sub post  {


    my $q = new CGI;
    my $filename = $q-param('file'); 
    my $upload_filehandle = $q->upload("file");

    open ( UPLOADFILE, ">$upload_dir/$filename" ) or die "$!";
    binmode UPLOADFILE;

    while ( <$upload_filehandle> ) {
        print UPLOADFILE;
    }

    close UPLOADFILE;

}

问题是,如果散列值长度大于128,则remte机器上的文件被损坏,我无法将其恢复为可恢复的检索功能

1 个答案:

答案 0 :(得分:-2)

您的示例未显示nstore()被赋予散列引用作为其第一个arg。

String QUERY11 = "CREATE TABLE " + TABLE_NAME + "(" + COL_DATE + " TEXT, " + COL_FAULT + " TEXT, " + COL_PARTREPLACE + " TEXT, " + COL_AMOUNT + " TEXT, " + COL_TECHNICIAN + " TEXT);";