/
home
/
.cpan
/
build
/
CDB_File-1.05-0
/
blib
/
lib
/
/home/.cpan/build/CDB_File-1.05-0/blib/lib
mkdir
upload
Name
Size
Mode
Actions
auto/
-
0755
rm
.exists
0
0644
edit
dl
rm
bun-x.pl
1251
0555
edit
dl
rm
CDB_File.pm
14127
0444
edit
dl
rm
Edit:
/home/.cpan/build/CDB_File-1.05-0/blib/lib/bun-x.pl
(1251B)
#! /usr/bin/perl use CDB_File; use strict; sub unnetstrings { my ($netstrings) = @_; my @result; while ( $netstrings =~ s/^([0-9]+):// ) { push @result, substr( $netstrings, 0, $1, '' ); $netstrings =~ s/^,//; } return @result; } my $chunk = 8192; sub extract { my ( $file, $t, $b ) = @_; my $head = $$b{"H$file"}; my ( $code, $type ) = $head =~ m/^([0-9]+)(.)/; if ( $type eq "/" ) { mkdir $file, 0777; } elsif ( $type eq "_" ) { my ( $total, $now, $got, $x ); open OUT, ">$file" or die "open for output: $!\n"; exists $$b{"D$code"} or die "corrupt bun file\n"; my $fh = $t->handle; sysseek $fh, $t->datapos, 0; $total = $t->datalen; while ($total) { $now = ( $total > $chunk ) ? $chunk : $total; $got = sysread $fh, $x, $now; if ( not $got ) { die "read error\n"; } $total -= $got; print OUT $x; } close OUT; } else { print STDERR "warning: skipping unknown file type\n"; } } die "usage\n" if @ARGV != 1; my ( %b, $t ); $t = tie %b, 'CDB_File', $ARGV[0] or die "tie: $!\n"; map { extract $_, $t, \%b } unnetstrings $b{""};
Save
cmd:
run