/usr/share/perl5/Dpkg/Interface/Storable.pm is in libdpkg-perl 1.16.1.2ubuntu7.7.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 | # Copyright © 2010 Raphaël Hertzog <hertzog@debian.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
package Dpkg::Interface::Storable;
use strict;
use warnings;
our $VERSION = "1.00";
use Dpkg::Gettext;
use Dpkg::ErrorHandling;
use Dpkg::Compression::FileHandle;
use overload
'""' => \&_stringify,
'fallback' => 1;
=encoding utf8
=head1 NAME
Dpkg::Interface::Storable - common methods related to object serialization
=head1 DESCRIPTION
Dpkg::Interface::Storable is only meant to be used as parent
class for other objects. It provides common methods that are
all implemented on top of two basic methods parse() and output().
=head1 BASE METHODS
Those methods must be provided by the object that wish to inherit
from Dpkg::Interface::Storable so that the methods provided can work.
=over 4
=item $obj->parse($fh, $desc)
This methods initialize the object with the data stored in the
filehandle. $desc is optional and is a textual description of
the filehandle used in error messages.
=item $string = $obj->output($fh)
This method returns a string representation of the object in $string
and it writes the same string to $fh (if it's defined).
=back
=head1 PROVIDED METHODS
=over 4
=item $obj->load($filename)
Initialize the object with the data stored in the file. The file can be
compressed, it will be uncompressed on the fly by using a
Dpkg::Compression::FileHandle object. If $filename is "-", then the
standard input is read (no compression is allowed in that case).
=cut
sub load {
my ($self, $file, @options) = @_;
unless ($self->can("parse")) {
internerr("%s cannot be loaded, it lacks the parse method", ref($self));
}
my ($desc, $fh) = ($file, undef);
if ($file eq "-") {
$fh = \*STDIN;
$desc = _g("<standard input>");
} else {
$fh = Dpkg::Compression::FileHandle->new();
open($fh, "<", $file) || syserr(_g("cannot read %s"), $file);
}
my $res = $self->parse($fh, $desc, @options);
if ($file ne "-") {
close($fh) || syserr(_g("cannot close %s"), $file);
}
return $res;
}
=item $obj->save($filename)
Store the object in the file. If the filename ends with a known
compression extension, it will be compressed on the fly by using a
Dpkg::Compression::FileHandle object. If $filename is "-", then the
standard output is used (data are written uncompressed in that case).
=cut
sub save {
my ($self, $file, @options) = @_;
unless ($self->can("output")) {
internerr("%s cannot be saved, it lacks the output method", ref($self));
}
my $fh;
if ($file eq "-") {
$fh = \*STDOUT;
} else {
$fh = Dpkg::Compression::FileHandle->new();
open($fh, ">", $file) || syserr(_g("cannot write %s"), $file);
}
$self->output($fh, @options);
if ($file ne "-") {
close($fh) || syserr(_g("cannot close %s"), $file);
}
}
=item "$obj"
Return a string representation of the object.
=cut
sub _stringify {
my ($self) = @_;
unless ($self->can("output")) {
internerr("%s cannot be stringified, it lacks the output method", ref($self));
}
return $self->output();
}
=back
=head1 AUTHOR
Raphaël Hertzog <hertzog@debian.org>.
=cut
1;
|