[ Avaa Bypassed ]




Upload:

Command:

hmhc3928@3.135.249.157: ~ $
package FileCache;

our $VERSION = '1.08';

=head1 NAME

FileCache - keep more files open than the system permits

=head1 SYNOPSIS

    no strict 'refs';

    use FileCache;
    # or
    use FileCache maxopen => 16;

    cacheout $mode, $path;
    # or
    cacheout $path;
    print $path @data;

    $fh = cacheout $mode, $path;
    # or
    $fh = cacheout $path;
    print $fh @data;

=head1 DESCRIPTION

The C<cacheout> function will make sure that there's a filehandle open
for reading or writing available as the pathname you give it. It
automatically closes and re-opens files if you exceed your system's
maximum number of file descriptors, or the suggested maximum I<maxopen>.

=over

=item cacheout EXPR

The 1-argument form of cacheout will open a file for writing (C<< '>' >>)
on it's first use, and appending (C<<< '>>' >>>) thereafter.

Returns EXPR on success for convenience. You may neglect the
return value and manipulate EXPR as the filehandle directly if you prefer.

=item cacheout MODE, EXPR

The 2-argument form of cacheout will use the supplied mode for the initial
and subsequent openings. Most valid modes for 3-argument C<open> are supported
namely; C<< '>' >>, C<< '+>' >>, C<< '<' >>, C<< '<+' >>, C<<< '>>' >>>,
C< '|-' > and C< '-|' >

To pass supplemental arguments to a program opened with C< '|-' > or C< '-|' >
append them to the command string as you would system EXPR.

Returns EXPR on success for convenience. You may neglect the
return value and manipulate EXPR as the filehandle directly if you prefer.

=back

=head1 CAVEATS

While it is permissible to C<close> a FileCache managed file,
do not do so if you are calling C<FileCache::cacheout> from a package other
than which it was imported, or with another module which overrides C<close>.
If you must, use C<FileCache::cacheout_close>.

Although FileCache can be used with piped opens ('-|' or '|-') doing so is
strongly discouraged.  If FileCache finds it necessary to close and then reopen
a pipe, the command at the far end of the pipe will be reexecuted - the results
of performing IO on FileCache'd pipes is unlikely to be what you expect.  The
ability to use FileCache on pipes may be removed in a future release.

FileCache does not store the current file offset if it finds it necessary to
close a file.  When the file is reopened, the offset will be as specified by the
original C<open> file mode.  This could be construed to be a bug.

The module functionality relies on symbolic references, so things will break
under 'use strict' unless 'no strict "refs"' is also specified.

=head1 BUGS

F<sys/param.h> lies with its C<NOFILE> define on some systems,
so you may have to set I<maxopen> yourself.

=cut

require 5.006;
use Carp;
use strict;
no strict 'refs';

# These are not C<my> for legacy reasons.
# Previous versions requested the user set $cacheout_maxopen by hand.
# Some authors fiddled with %saw to overcome the clobber on initial open.
use vars qw(%saw $cacheout_maxopen);
$cacheout_maxopen = 16;

use base 'Exporter';
our @EXPORT = qw[cacheout cacheout_close];


my %isopen;
my $cacheout_seq = 0;

sub import {
    my ($pkg,%args) = @_;

    # Use Exporter. %args are for us, not Exporter.
    # Make sure to up export_to_level, or we will import into ourselves,
    # rather than our calling package;

    __PACKAGE__->export_to_level(1);
    Exporter::import( $pkg );

    # Truth is okay here because setting maxopen to 0 would be bad
    return $cacheout_maxopen = $args{maxopen} if $args{maxopen};

    # XXX This code is crazy.  Why is it a one element foreach loop?
    # Why is it using $param both as a filename and filehandle?
    foreach my $param ( '/usr/include/sys/param.h' ){
      if (open($param, '<', $param)) {
	local ($_, $.);
	while (<$param>) {
	  if( /^\s*#\s*define\s+NOFILE\s+(\d+)/ ){
	    $cacheout_maxopen = $1 - 4;
	    close($param);
	    last;
	  }
	}
	close $param;
      }
    }
    $cacheout_maxopen ||= 16;
}

# Open in their package.
sub cacheout_open {
  return open(*{caller(1) . '::' . $_[1]}, $_[0], $_[1]) && $_[1];
}

# Close in their package.
sub cacheout_close {
  # Short-circuit in case the filehandle disappeared
  my $pkg = caller($_[1]||0);
  defined fileno(*{$pkg . '::' . $_[0]}) &&
    CORE::close(*{$pkg . '::' . $_[0]});
  delete $isopen{$_[0]};
}

# But only this sub name is visible to them.
sub cacheout {
    my($mode, $file, $class, $ret, $ref, $narg);
    croak "Not enough arguments for cacheout"  unless $narg = scalar @_;
    croak "Too many arguments for cacheout"    if $narg > 2;

    ($mode, $file) = @_;
    ($file, $mode) = ($mode, $file) if $narg == 1;
    croak "Invalid mode for cacheout" if $mode &&
      ( $mode !~ /^\s*(?:>>|\+?>|\+?<|\|\-|)|\-\|\s*$/ );

    # Mode changed?
    if( $isopen{$file} && ($mode||'>') ne $isopen{$file}->[1] ){
      &cacheout_close($file, 1);
    }

    if( $isopen{$file}) {
      $ret = $file;
      $isopen{$file}->[0]++;
    }
    else{
      if( scalar keys(%isopen) > $cacheout_maxopen -1 ) {
	my @lru = sort{ $isopen{$a}->[0] <=> $isopen{$b}->[0] } keys(%isopen);
	$cacheout_seq = 0;
	$isopen{$_}->[0] = $cacheout_seq++ for
	  splice(@lru, int($cacheout_maxopen / 3)||$cacheout_maxopen);
	&cacheout_close($_, 1) for @lru;
      }

      unless( $ref ){
	$mode ||= $saw{$file} ? '>>' : ($saw{$file}=1, '>');
      }
      #XXX should we just return the value from cacheout_open, no croak?
      $ret = cacheout_open($mode, $file) or croak("Can't create $file: $!");

      $isopen{$file} = [++$cacheout_seq, $mode];
    }
    return $ret;
}
1;

Filemanager

Name Type Size Permission Actions
App Folder 0755
Archive Folder 0755
Attribute Folder 0755
B Folder 0755
CPAN Folder 0755
Class Folder 0755
Compress Folder 0755
Config Folder 0755
DBM_Filter Folder 0755
Devel Folder 0755
Encode Folder 0755
ExtUtils Folder 0755
File Folder 0755
Filter Folder 0755
Getopt Folder 0755
HTTP Folder 0755
I18N Folder 0755
IO Folder 0755
IPC Folder 0755
JSON Folder 0755
LWP Folder 0755
Locale Folder 0755
Log Folder 0755
Math Folder 0755
Memoize Folder 0755
Module Folder 0755
Net Folder 0755
Object Folder 0755
Package Folder 0755
Perl Folder 0755
PerlIO Folder 0755
Pod Folder 0755
Search Folder 0755
Term Folder 0755
Test Folder 0755
Text Folder 0755
Thread Folder 0755
Tie Folder 0755
Time Folder 0755
URI Folder 0755
Unicode Folder 0755
User Folder 0755
Version Folder 0755
encoding Folder 0755
overload Folder 0755
pod Folder 0755
unicore Folder 0755
vendor_perl Folder 0755
warnings Folder 0755
AnyDBM_File.pm File 2.56 KB 0644
AutoLoader.pm File 14.66 KB 0644
AutoSplit.pm File 19.18 KB 0644
Benchmark.pm File 27.87 KB 0644
CORE.pod File 2.7 KB 0644
CPAN.pm File 132.91 KB 0644
DB.pm File 18.43 KB 0644
DBM_Filter.pm File 14.06 KB 0644
DirHandle.pm File 1.52 KB 0644
Dumpvalue.pm File 16.5 KB 0644
English.pm File 4.34 KB 0644
FileCache.pm File 5.44 KB 0644
FileHandle.pm File 6.62 KB 0644
FindBin.pm File 4.45 KB 0644
LWP.pm File 21.15 KB 0644
Memoize.pm File 34.4 KB 0644
NEXT.pm File 18.05 KB 0644
PerlIO.pm File 10.19 KB 0644
Safe.pm File 24.03 KB 0644
SelectSaver.pm File 1.05 KB 0644
SelfLoader.pm File 16.97 KB 0644
Symbol.pm File 4.68 KB 0644
Test.pm File 28.13 KB 0644
Thread.pm File 8.09 KB 0644
UNIVERSAL.pm File 6.97 KB 0644
URI.pm File 33.01 KB 0644
XSLoader.pm File 9.99 KB 0644
_charnames.pm File 29.8 KB 0644
autouse.pm File 4.14 KB 0644
base.pm File 6.37 KB 0644
bigint.pm File 17.44 KB 0644
bignum.pm File 18.23 KB 0644
bigrat.pm File 14.11 KB 0644
blib.pm File 2.04 KB 0644
bytes.pm File 2.96 KB 0644
bytes_heavy.pl File 758 B 0644
charnames.pm File 19.22 KB 0644
deprecate.pm File 3.01 KB 0644
diagnostics.pm File 17.96 KB 0644
dumpvar.pl File 14.96 KB 0644
feature.pm File 11.06 KB 0644
fields.pm File 9.28 KB 0644
filetest.pm File 3.91 KB 0644
if.pm File 1.13 KB 0644
integer.pm File 3.19 KB 0644
less.pm File 3.13 KB 0644
locale.pm File 2.72 KB 0644
lwpcook.pod File 9.05 KB 0644
lwptut.pod File 24.89 KB 0644
open.pm File 7.83 KB 0644
overload.pm File 52.66 KB 0644
overloading.pm File 1.77 KB 0644
perl5db.pl File 302.79 KB 0644
perlfaq.pm File 94 B 0644
sigtrap.pm File 7.46 KB 0644
sort.pm File 5.95 KB 0644
strict.pm File 3.84 KB 0644
subs.pm File 845 B 0644
utf8.pm File 7.6 KB 0644
utf8_heavy.pl File 30.1 KB 0644
vars.pm File 2.3 KB 0644
vmsish.pm File 4.22 KB 0644
warnings.pm File 18.34 KB 0644