⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serialize.pm

📁 1. 记录每个帖子的访问人情况
💻 PM
字号:
# Copyright 2001-2005 Six Apart.# SCRiPTMAFiA 2005 - THE DiRTY HANDS ON YOUR SCRiPTS## $Id: Serialize.pm 10197 2005-03-09 00:27:57Z ezra $package MT::Serialize;use strict;{    my %Types = (        Storable => [ \&_freeze_storable, \&_thaw_storable ],        MT       => [ \&_freeze_mt,       \&_thaw_mt    ],    );    sub new {        my $class = shift;        my $type = $Types{$_[0]};        bless { freeze => $type->[0], thaw => $type->[1] }, $class;    }}sub serialize {    my $ser = shift;    $ser->{freeze}->(@_);}sub unserialize {    my $ser = shift;    $ser->{thaw}->(@_);}sub _freeze_storable { require Storable; Storable::freeze(@_) }sub _thaw_storable   { require Storable; Storable::thaw(@_)   }sub _freeze_mt {    my($ref) = @_;    my $frozen = 'SERG';    for my $col (keys %{ $$ref }) {        my $col_val = ${$ref}->{$col};        $col_val = '' unless defined $col_val;        $frozen .= pack('N', length($col)) . $col .                   pack('N', length($col_val)) . $col_val;    }    $frozen;}sub _thaw_mt {    my($frozen) = @_;    return unless substr($frozen, 0, 4) eq 'SERG';    substr($frozen, 0, 4) = '';    my $thawed = {};    my $len = length $frozen;    my $pos = 0;    while ($pos < $len) {        my $slen = unpack 'N', substr($frozen, $pos, 4);        my $col = $slen ? substr($frozen, $pos+4, $slen) : '';        $pos += 4 + $slen;        $slen = unpack 'N', substr($frozen, $pos, 4);        my $col_val = substr($frozen, $pos+4, $slen);        $pos += 4 + $slen;        $thawed->{$col} = $col_val;    }    \$thawed;}1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -