मैंने हाल ही में सनसोलारिस से कुछ पर्ल कोड को 64 बिट के लिनक्स (उबंटू) बॉक्स में माइग्रेट किया है। माइग्रेशन के बाद Storable.pm
निम्न त्रुटि के साथ टूट रहा है:पर्ल त्रुटि: संदर्भ
Byte order is not compatible at /usr/lib/perl/5.18/Storable.pm, at /home/VD/Cache.pm line 347.
इंटरनेट मैंने पाया कि मैं thaw
के बजाय nfreeze
उपयोग करने की आवश्यकता पर कुछ शोध करने के बाद, लेकिन अब मैं निम्न त्रुटि प्राप्त:
not a reference at /home/VD/Cache.pm line 347.
कोई सुझाव यह कैसे ठीक करें?
sub get
{
my($self, $type, $param_ref) = @_;
#return 1 if(!$self->{'INI'}{'sf.system.cache.enabled'});
if($self->{'INI'}{'sf.system.cache.database.enabled'})
{
### DATABASE
my $param = $self->SF::Cache::convert_parameter($type, $param_ref);
if($self->SF::Cache::CACHE_TABLE_USERCONTENT && $$param{'type'} == 2)
{
### user-content
my $query = 'SELECT PARAM_CONTENT AS C, DATA AS D FROM sf_cache_usercontent WHERE SITE=? AND PARAM_USER=?';
my $bindvar = { 1=>$self->{'site'}, 2=>$$param{'user'} };
my $sth = $self->db_select($query, $bindvar);
#print SF::Util::debug_dumpquery($query, $bindvar);
return undef if($self->{'Error'});
my %usercontent;
undef(%usercontent);
while(my $hashref = $self->db_fetch($sth))
{
$usercontent{$$hashref{'C'}} = $$hashref{'D'};# ? 1 : 0;
}
return \%usercontent;
}
else
### ******************************************************************************************************
{
my $ret = $self->SF::Cache::get_database('DATA', $param);
return Storable::nfreeze($ret) if(defined $ret);
}
}
else
{
### FILESYSTEM
my $filename = $self->SF::Cache::filename($type, $param_ref);
if($filename && -e $filename)
{
if($self->{'INI'}{'sf.system.cache.lock.enabled'} && defined &lock_retrieve)
{
return lock_retrieve $filename;
}
else
{
return retrieve $filename;
}
}
else
{
$! = 0;
}
}
return undef;
}
कौन सा लाइन घर/वीडी/Cache.pm 347 है? – Jens
वापसी Storable :: nfreeze ($ ret) अगर (परिभाषित $ ret); – Darko1991