File-Locate-Iterator
view release on metacpan or search on metacpan
Makefile.PL
MANIFEST This list of files
MANIFEST.SKIP
ppport.h
README
SIGNATURE
t/File-Locate-Iterator-base64.t
t/File-Locate-Iterator-qp.t
t/File-Locate-Iterator-subfile.t
t/File-Locate-Iterator-taint.t
t/File-Locate-Iterator-weaken.t
t/File-Locate-Iterator.t
t/FileMap.t
t/Iterator-Simple-weaken.t
t/Iterator-Simple.t
t/Iterator-weaken.t
t/Iterator.t
t/locate-program.t
t/MooseX-Iterator-Locate-subclass.t
t/MooseX-Iterator-Locate-weaken.t
t/MooseX-Iterator-Locate.t
t/MyTestHelpers.pm
t/samp.empty
t/samp.locatedb
t/samp.locatedb.base64
t/samp.locatedb.offset
t/samp.locatedb.quotedprint
t/samp.locatedb.subfile
t/samp.zeros
xt/0-examples-xrefs.t
SHA256 c13477508fccce6b359834d5928b9d3f1f3936231bc9b12d4f5926dec5bc2888 lib/File/Locate/Iterator.pm
SHA256 8352e86727c26b2d413e6b3addf70cc7548d78b3faa4953bf1227d33b4564403 lib/File/Locate/Iterator/FileMap.pm
SHA256 b2d97cdeb334b2d3cb38fb97ea800f46c2fe563c051f6b8a9ea1ff2f09b14dcf lib/Iterator/Locate.pm
SHA256 35d98f17cc4692749a19076b392d11ca069bb0ae292db4574ff216a52e3d0d2b lib/Iterator/Simple/Locate.pm
SHA256 b19e818f857f0b8340520155cc057b60cc7e9e1a27d73b86ed81977b96d4b74d lib/MooseX/Iterator/Locate.pm
SHA256 11f0069e19da794d5f7ff558edb7d7b843450e17d97fa68355d85c586dca13f2 ppport.h
SHA256 d00729f62aafe9ceb7bc77913ea16151e27595f8bf6d40e6d2b15706ae82bea1 t/File-Locate-Iterator-base64.t
SHA256 3f2a46a19a287871c7aaa5cfc7869d061fd1a106d9fa0802c57bec925da6c675 t/File-Locate-Iterator-qp.t
SHA256 380fef1cf7c26bf068766eaa54d370aef676fb1fc1666d57855b2524cc93ac94 t/File-Locate-Iterator-subfile.t
SHA256 440a43c2fdf37845e465e9dac7342c85964639fd0332d006cad1fdd604ab06a8 t/File-Locate-Iterator-taint.t
SHA256 d6a36da8296bc1e2a669ac1517262dbb6ab860727e9754363c2bae748fe925c7 t/File-Locate-Iterator-weaken.t
SHA256 c0bff79f34bfd57d4ed318a528c0ba40d0893434eb4c9b74f4fffe4e5969e11d t/File-Locate-Iterator.t
SHA256 7a0b1e80d178e61ae4d2cd491324febb5761c0f660488c10915792879d6bdcc8 t/FileMap.t
SHA256 52440b2e49c8f9b7ec045c66f1354f5e48c092acc98742063e907c825e390dee t/Iterator-Simple-weaken.t
SHA256 360ed8a96f7920a5081e01e1204f85f7ed378c057caf2b2675cb9d0d2af923d0 t/Iterator-Simple.t
SHA256 5ed115479aa6dce11761d7ec75eaf95c2e4cedc576a95eb1c5feaa73cd96eeb9 t/Iterator-weaken.t
SHA256 80092a454ffd0c61a9703d795bca5d72f7b795314b2b0344a98de0ac72b3d17c t/Iterator.t
SHA256 4ff52d1481580015596c31e4bc9eb156e53c5465430f8b9148569d745c1dddd2 t/MooseX-Iterator-Locate-subclass.t
SHA256 caede219f8470fe6138d4f02946e2dc694077be34307b47008142b37d5cb41ba t/MooseX-Iterator-Locate-weaken.t
SHA256 f7e0cff16b1ecde7983e1703552a7739c2d61870cedbe67d73a34e8816cf921a t/MooseX-Iterator-Locate.t
SHA256 91cd2bba3e246abf05c342ed549ed6d902e8a77a43b6c9c4e092e4c918732ac0 t/MyTestHelpers.pm
SHA256 aba795703cff53914bca8aa6666d000f4547b328753a79d50ad5dd373c3601f4 t/locate-program.t
SHA256 e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 t/samp.empty
SHA256 a5fc8cc2a6b1b01fa398dcb69841dee859638e6804691fce481c5cd93c36bbd3 t/samp.locatedb
SHA256 e3f633541e9914748e3616cf7f0d59b44b94ec2d6a090c4cee6143d2ae798d61 t/samp.locatedb.base64
SHA256 89e9bd0223d632978dc7f19f9e03ba14edecc622fe5ae5554a21877b2cf8ca39 t/samp.locatedb.offset
SHA256 0bc05dde97ae85a8ecec430c443987b05ce6abb3d4993dd0482a011dcbdbad1f t/samp.locatedb.quotedprint
SHA256 f249160e3009d3c523e8c7eeebff8af92711f62b885f8f940aef8da05c270f22 t/samp.locatedb.subfile
SHA256 280fd45af12446130aeef21b89f0020edc7e9a732c37ff55f9ee4ebd8ba9021c t/samp.zeros
devel/Shared.pm view on Meta::CPAN
sub map_handle {
my ($fh, @args) = @_;
$fh = Symbol::qualify_to_ref ($fh, caller);
my ($dev, $ino) = stat ($fh);
my $key = "$dev,$ino";
return ($cache{$key} ||= do {
my $mmap;
File::Map::map_handle ($mmap, $fh, @args);
my $ref = $cache{$key} = \$mmap;
Scalar::Util::weaken ($cache{$key});
$ref;
});
}
package File::Locate::Iterator::TieHashDeleteUndef;
use Tie::Hash;
our @ISA = 'Tie::StdHash';
# sub TIEHASH {
# my ($class) = @_;
devel/Shared.pm view on Meta::CPAN
}
package main;
my %h;
tie %h, 'File::Locate::Iterator::TieHashDeleteUndef';
$h{1} = 2;
$h{1} = undef;
require Scalar::Util;
$h{1} = [];
Scalar::Util::weaken ($h{1});
print "now $h{1}\n";
1;
__END__
devel/lib/Sys/Mmap/Object.pm view on Meta::CPAN
return $cache{$filename} || do {
open my $fh, '<', $filename
or die "Cannot open $filename: $!";
my $self = bless { filename => $filename,
fh => $fh,
mmap => undef }, $class;
Sys::Mmap::mmap ($self->{'mmap'}, 0,
Sys::Mmap::PROT_READ(), Sys::Mmap::MAP_SHARED(), $fh)
or die "Cannot mmap\n";
$cache{$filename} = $self;
Scalar::Util::weaken ($cache{$filename});
$self;
};
}
sub DESTROY {
my ($self) = @_;
Sys::Mmap::munmap ($self->{'mmap'})
or die "Oops, cannot munmap\n";
# FIXME: not weakened yet ...
my $filename = $self->{'filename'};
print "DESTROY ", $cache{$filename}//'undef',"\n";
if (! defined $cache{$filename}) {
delete $cache{$filename};
}
}
if (1) {
package main;
my $filename = '/var/cache/locate/locatedb';
lib/File/Locate/Iterator/FileMap.pm view on Meta::CPAN
# use Devel::Peek;
# Dump ($self->{'mmap'});
#
# # crib: must taint before mapping, doesn't work afterwards
# require Taint::Util;
# Taint::Util::taint($self->{'mmap'});
File::Map::map_handle ($self->{'mmap'}, $fh, '<', $tell);
File::Map::advise ($self->{'mmap'}, 'sequential');
Scalar::Util::weaken ($cache{$key} = $self);
$self;
});
}
# return a scalar ref to the mmapped string
sub mmap_ref {
my ($self) = @_;
return \($self->{'mmap'});
}
sub DESTROY {
my ($self) = @_;
sv_reftype|5.003007|5.003007|
sv_replace|5.003007|5.003007|
sv_report_used|5.003007|5.003007|
sv_reset|5.003007|5.003007|
sv_resetpvn|5.017005||Viu
SvROK|5.003007|5.003007|
SvROK_off|5.003007|5.003007|
SvROK_on|5.003007|5.003007|
SvRV|5.003007|5.003007|
SvRV_set|5.009003|5.003007|p
sv_rvunweaken|5.027004|5.027004|
sv_rvweaken|5.006000|5.006000|
SvRX|5.009005|5.003007|p
SvRXOK|5.009005|5.003007|p
sv_sethek|5.015004||cViu
sv_setiv|5.003007|5.003007|
sv_setiv_mg|5.004005|5.003007|p
SvSETMAGIC|5.003007|5.003007|
SvSetMagicSV|5.004000|5.004000|
SvSetMagicSV_nosteal|5.004000|5.004000|
sv_setnv|5.006000|5.003007|
sv_setnv_mg|5.006000|5.003007|p
t/File-Locate-Iterator.t view on Meta::CPAN
SKIP: {
my $it1 = File::Locate::Iterator->new (database_file => $samp_locatedb,
use_mmap => 'if_possible');
my $it2 = File::Locate::Iterator->new (database_file => $samp_locatedb,
use_mmap => 'if_possible');
($it1->_using_mmap && $it2->_using_mmap)
or skip 'mmap "if_possible" not used', 2;
is ($it1->{'fm'}, $it2->{'fm'}, "FileMap re-used");
my $fm = $it1->{'fm'};
Scalar::Util::weaken ($fm);
undef $it1;
undef $it2;
is ($fm, undef, 'FileMap destroyed with iterators');
}
#------------------------------------------------------------------------------
# database_str option
{
t/FileMap.t view on Meta::CPAN
binmode($fh) # against msdos :crlf
or die 'oops, cannot set binmode';
is (File::Locate::Iterator::FileMap->find($fh), undef,
'find() not mapped yet');
my $fm1 = File::Locate::Iterator::FileMap->get ($fh);
my $fm2 = File::Locate::Iterator::FileMap->get ($fh);
is ($fm1, $fm2, "get() re-used");
my $fm = $fm1;
Scalar::Util::weaken ($fm);
undef $fm1;
undef $fm2;
is ($fm, undef, 'FileMap destroyed when weakened');
}
exit 0;
t/MyTestHelpers.pm view on Meta::CPAN
? "$obj->{$_}" : '[undef]')}
keys %$obj));
}
if (eval { require Devel::FindRef }) {
MyTestHelpers::diag (Devel::FindRef::track($obj, 8));
} else {
MyTestHelpers::diag ("Devel::FindRef not available -- ", $@);
}
}
sub test_weaken_show_leaks {
my ($leaks) = @_;
$leaks || return;
my $unfreed = $leaks->unfreed_proberefs;
my $unfreed_count = scalar(@$unfreed);
MyTestHelpers::diag ("Test-Weaken leaks $unfreed_count objects");
MyTestHelpers::dump ($leaks);
my $proberef;
foreach $proberef (@$unfreed) {
( run in 0.286 second using v1.01-cache-2.11-cpan-a9ef4e587e4 )