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

📄 filecache.pm

📁 MSYS在windows下模拟了一个类unix的终端
💻 PM
字号:
package FileCache;=head1 NAMEFileCache - keep more files open than the system permits=head1 SYNOPSIS    cacheout $path;    print $path @data;=head1 DESCRIPTIONThe C<cacheout> function will make sure that there's a filehandle openfor writing available as the pathname you give it.  It automaticallycloses and re-opens files if you exceed your system file descriptormaximum.=head1 BUGSF<sys/param.h> lies with its C<NOFILE> define on some systems,so you may have to set $FileCache::cacheout_maxopen yourself.=cutrequire 5.000;use Carp;use Exporter;@ISA = qw(Exporter);@EXPORT = qw(    cacheout);# Open in their package.sub cacheout_open {    my $pack = caller(1);    open(*{$pack . '::' . $_[0]}, $_[1]);}sub cacheout_close {    my $pack = caller(1);    close(*{$pack . '::' . $_[0]});}# But only this sub name is visible to them.$cacheout_seq = 0;$cacheout_numopen = 0;sub cacheout {    ($file) = @_;    unless (defined $cacheout_maxopen) {	if (open(PARAM,'/usr/include/sys/param.h')) {	    local ($_, $.);	    while (<PARAM>) {		$cacheout_maxopen = $1 - 4		    if /^\s*#\s*define\s+NOFILE\s+(\d+)/;	    }	    close PARAM;	}	$cacheout_maxopen = 16 unless $cacheout_maxopen;    }    if (!$isopen{$file}) {	if (++$cacheout_numopen > $cacheout_maxopen) {	    my @lru = sort {$isopen{$a} <=> $isopen{$b};} keys(%isopen);	    splice(@lru, $cacheout_maxopen / 3);	    $cacheout_numopen -= @lru;	    for (@lru) { &cacheout_close($_); delete $isopen{$_}; }	}	cacheout_open($file, ($saw{$file}++ ? '>>' : '>') . $file)	    or croak("Can't create $file: $!");    }    $isopen{$file} = ++$cacheout_seq;}1;

⌨️ 快捷键说明

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