亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? path.pm

?? ARM上的如果你對底層感興趣
?? PM
字號:
package File::Path;

=head1 NAME

File::Path - create or remove a series of directories

=head1 SYNOPSIS

C<use File::Path>

C<mkpath(['/foo/bar/baz', 'blurfl/quux'], 1, 0711);>

C<rmtree(['foo/bar/baz', 'blurfl/quux'], 1, 1);>

=head1 DESCRIPTION

The C<mkpath> function provides a convenient way to create directories, even
if your C<mkdir> kernel call won't create more than one level of directory at
a time.  C<mkpath> takes three arguments:

=over 4

=item *

the name of the path to create, or a reference
to a list of paths to create,

=item *

a boolean value, which if TRUE will cause C<mkpath>
to print the name of each directory as it is created
(defaults to FALSE), and

=item *

the numeric mode to use when creating the directories
(defaults to 0777)

=back

It returns a list of all directories (including intermediates, determined
using the Unix '/' separator) created.

Similarly, the C<rmtree> function provides a convenient way to delete a
subtree from the directory structure, much like the Unix command C<rm -r>.
C<rmtree> takes three arguments:

=over 4

=item *

the root of the subtree to delete, or a reference to
a list of roots.  All of the files and directories
below each root, as well as the roots themselves,
will be deleted.

=item *

a boolean value, which if TRUE will cause C<rmtree> to
print a message each time it examines a file, giving the
name of the file, and indicating whether it's using C<rmdir>
or C<unlink> to remove it, or that it's skipping it.
(defaults to FALSE)

=item *

a boolean value, which if TRUE will cause C<rmtree> to
skip any files to which you do not have delete access
(if running under VMS) or write access (if running
under another OS).  This will change in the future when
a criterion for 'delete permission' under OSs other
than VMS is settled.  (defaults to FALSE)

=back

It returns the number of files successfully deleted.  Symlinks are
treated as ordinary files.

B<NOTE:> If the third parameter is not TRUE, C<rmtree> is B<unsecure>
in the face of failure or interruption.  Files and directories which
were not deleted may be left with permissions reset to allow world
read and write access.  Note also that the occurrence of errors in
rmtree can be determined I<only> by trapping diagnostic messages
using C<$SIG{__WARN__}>; it is not apparent from the return value.
Therefore, you must be extremely careful about using C<rmtree($foo,$bar,0>
in situations where security is an issue.

=head1 AUTHORS

Tim Bunce <F<Tim.Bunce@ig.co.uk>> and
Charles Bailey <F<bailey@genetics.upenn.edu>>

=head1 REVISION

Current $VERSION is 1.0401.

=cut

use Carp;
use File::Basename ();
use DirHandle ();
use Exporter ();
use strict;

use vars qw( $VERSION @ISA @EXPORT );
$VERSION = "1.0401";
@ISA = qw( Exporter );
@EXPORT = qw( mkpath rmtree );

my $Is_VMS = $^O eq 'VMS';

# These OSes complain if you want to remove a file that you have no
# write permission to:
my $force_writeable = ($^O eq 'os2' || $^O eq 'dos' || $^O eq 'MSWin32'
		       || $^O eq 'amigaos');

sub mkpath {
    my($paths, $verbose, $mode) = @_;
    # $paths   -- either a path string or ref to list of paths
    # $verbose -- optional print "mkdir $path" for each directory created
    # $mode    -- optional permissions, defaults to 0777
    local($")="/";
    $mode = 0777 unless defined($mode);
    $paths = [$paths] unless ref $paths;
    my(@created,$path);
    foreach $path (@$paths) {
	$path .= '/' if $^O eq 'os2' and $path =~ /^\w:$/; # feature of CRT 
	next if -d $path;
	# Logic wants Unix paths, so go with the flow.
	$path = VMS::Filespec::unixify($path) if $Is_VMS;
	my $parent = File::Basename::dirname($path);
	# Allow for creation of new logical filesystems under VMS
	if (not $Is_VMS or $parent !~ m:/[^/]+/000000/?:) {
	    push(@created,mkpath($parent, $verbose, $mode)) unless (-d $parent);
	}
	print "mkdir $path\n" if $verbose;
	unless (mkdir($path,$mode)) {
	    # allow for another process to have created it meanwhile
	    croak "mkdir $path: $!" unless -d $path;
	}
	push(@created, $path);
    }
    @created;
}

sub rmtree {
    my($roots, $verbose, $safe) = @_;
    my(@files);
    my($count) = 0;
    $roots = [$roots] unless ref $roots;
    $verbose ||= 0;
    $safe ||= 0;

    my($root);
    foreach $root (@{$roots}) {
	$root =~ s#/$##;
	(undef, undef, my $rp) = lstat $root or next;
	$rp &= 07777;	# don't forget setuid, setgid, sticky bits
	if ( -d _ ) {
	    # notabene: 0777 is for making readable in the first place,
	    # it's also intended to change it to writable in case we have
	    # to recurse in which case we are better than rm -rf for 
	    # subtrees with strange permissions
	    chmod(0777, ($Is_VMS ? VMS::Filespec::fileify($root) : $root))
	      or carp "Can't make directory $root read+writeable: $!"
		unless $safe;

	    my $d = DirHandle->new($root)
	      or carp "Can't read $root: $!";
	    @files = $d->read;
	    $d->close;

	    # Deleting large numbers of files from VMS Files-11 filesystems
	    # is faster if done in reverse ASCIIbetical order 
	    @files = reverse @files if $Is_VMS;
	    ($root = VMS::Filespec::unixify($root)) =~ s#\.dir$## if $Is_VMS;
	    @files = map("$root/$_", grep $_!~/^\.{1,2}$/,@files);
	    $count += rmtree(\@files,$verbose,$safe);
	    if ($safe &&
		($Is_VMS ? !&VMS::Filespec::candelete($root) : !-w $root)) {
		print "skipped $root\n" if $verbose;
		next;
	    }
	    chmod 0777, $root
	      or carp "Can't make directory $root writeable: $!"
		if $force_writeable;
	    print "rmdir $root\n" if $verbose;
	    if (rmdir $root) {
		++$count;
	    }
	    else {
		carp "Can't remove directory $root: $!";
		chmod($rp, ($Is_VMS ? VMS::Filespec::fileify($root) : $root))
		    or carp("and can't restore permissions to "
		            . sprintf("0%o",$rp) . "\n");
	    }
	}
	else { 
	    if ($safe &&
		($Is_VMS ? !&VMS::Filespec::candelete($root) : !-w $root)) {
		print "skipped $root\n" if $verbose;
		next;
	    }
	    chmod 0666, $root
	      or carp "Can't make file $root writeable: $!"
		if $force_writeable;
	    print "unlink $root\n" if $verbose;
	    # delete all versions under VMS
	    for (;;) {
		unless (unlink $root) {
		    carp "Can't unlink file $root: $!";
		    if ($force_writeable) {
			chmod $rp, $root
			    or carp("and can't restore permissions to "
			            . sprintf("0%o",$rp) . "\n");
		    }
		    last;
		}
		++$count;
		last unless $Is_VMS && lstat $root;
	    }
	}
    }

    $count;
}

1;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美不卡一区| 欧美亚日韩国产aⅴ精品中极品| 亚洲欧美偷拍卡通变态| 国产亚洲一区字幕| 欧美精品一区二区不卡| 精品欧美一区二区久久| 精品久久久久久久人人人人传媒 | 天天综合色天天| 伊人色综合久久天天人手人婷| 中文字幕一区二区三区在线播放| 国产午夜精品久久久久久免费视 | 欧美午夜理伦三级在线观看| 一本色道久久综合亚洲精品按摩 | 欧美美女黄视频| 5858s免费视频成人| 日韩欧美一区在线观看| 精品免费视频.| 国产精品乱码一区二区三区软件 | 国产精品亚洲一区二区三区在线| 久久99精品国产91久久来源| 国产乱码精品一区二区三区五月婷| 国产老妇另类xxxxx| 成人激情动漫在线观看| 91理论电影在线观看| 欧美日韩一区二区三区在线看| 在线成人高清不卡| 久久久久久黄色| 亚洲婷婷综合久久一本伊一区 | 制服丝袜av成人在线看| 日韩精品专区在线影院观看| 久久精品欧美一区二区三区不卡| 中文字幕亚洲电影| 天堂午夜影视日韩欧美一区二区| 国产揄拍国内精品对白| 91国产免费观看| 欧美精品一区二区三区四区| 亚洲欧美综合网| 美女视频一区二区三区| 色悠悠久久综合| 日韩三级av在线播放| 中文字幕亚洲一区二区av在线| 无吗不卡中文字幕| 成年人网站91| 欧美一区二区免费视频| 国产精品丝袜一区| 热久久一区二区| 日本韩国一区二区| 久久九九99视频| 青青草成人在线观看| 99九九99九九九视频精品| 欧美成人a在线| 五月天丁香久久| 色婷婷精品久久二区二区蜜臀av | 丰满亚洲少妇av| 日韩一区二区三区免费观看| 亚洲精品国产品国语在线app| 国产一区999| 日韩美女视频一区二区在线观看| 亚洲一区二区在线免费看| 成人激情电影免费在线观看| xvideos.蜜桃一区二区| 午夜激情久久久| 欧洲激情一区二区| 亚洲靠逼com| 91最新地址在线播放| 欧美精彩视频一区二区三区| 精品在线一区二区三区| 777色狠狠一区二区三区| 依依成人综合视频| 91国产成人在线| 玉米视频成人免费看| av电影在线观看完整版一区二区| 国产亚洲欧美色| 国产精品亚洲午夜一区二区三区 | 国产精品成人一区二区三区夜夜夜| 日韩av一区二| 欧美精品tushy高清| 五月综合激情网| 欧美影视一区在线| 亚洲一区二区欧美日韩| 欧美男人的天堂一二区| 午夜电影网亚洲视频| 91精品国产91久久综合桃花| 日本怡春院一区二区| 欧美一区二区久久久| 麻豆国产91在线播放| 精品国产凹凸成av人网站| 麻豆91精品视频| 久久久午夜电影| 国产成人日日夜夜| 17c精品麻豆一区二区免费| 色先锋资源久久综合| 亚洲精品国产成人久久av盗摄| 欧美视频中文字幕| 蜜桃91丨九色丨蝌蚪91桃色| 日韩欧美高清一区| 懂色一区二区三区免费观看| 日韩一区欧美小说| 欧美日本精品一区二区三区| 日本亚洲电影天堂| 国产欧美精品一区aⅴ影院 | 91精品国产乱| 国产乱色国产精品免费视频| 成人免费一区二区三区视频| 欧美日韩成人一区| 国产精品一二三四| 一区二区三区加勒比av| 欧美一级xxx| 国产98色在线|日韩| 一区二区成人在线| 日韩一区二区三区在线视频| 成人av在线一区二区| 日日摸夜夜添夜夜添亚洲女人| 欧美激情中文不卡| 欧美美女bb生活片| 不卡的电视剧免费网站有什么| 性欧美大战久久久久久久久| 久久精品网站免费观看| 欧美视频一区在线观看| 国产一区二区福利视频| 香蕉久久夜色精品国产使用方法 | 91精品国产91久久久久久一区二区| 国产成人一区在线| 丝袜亚洲另类欧美| 国产精品伦理一区二区| 欧美成人精品二区三区99精品| 色婷婷激情久久| 国产高清亚洲一区| 蜜桃一区二区三区四区| 亚洲综合免费观看高清完整版在线| 久久婷婷色综合| 制服丝袜国产精品| 欧美性猛交xxxxxx富婆| 国产成人精品网址| 久久69国产一区二区蜜臀| 亚洲电影一区二区三区| 亚洲欧美在线高清| 国产精品看片你懂得| 久久精品无码一区二区三区| 精品日韩欧美一区二区| 制服丝袜国产精品| 欧美夫妻性生活| 欧美日韩精品一区二区天天拍小说 | 国产麻豆视频精品| 美女诱惑一区二区| 日本亚洲免费观看| 日韩精品免费专区| 性感美女极品91精品| 亚洲影视在线播放| 亚洲激情五月婷婷| 一区二区在线免费| 亚洲一区二区中文在线| 亚洲自拍另类综合| 亚洲综合无码一区二区| 亚洲一级片在线观看| 一区二区三区自拍| 亚洲二区在线观看| 日韩中文欧美在线| 日本不卡视频在线观看| 老汉av免费一区二区三区| 日本成人在线一区| 麻豆传媒一区二区三区| 黄页网站大全一区二区| 国产一区91精品张津瑜| 国产高清精品在线| 成av人片一区二区| 在线免费视频一区二区| 在线观看日韩一区| 欧美一级电影网站| 久久一区二区三区四区| 日本一区二区三区高清不卡| 国产精品二区一区二区aⅴ污介绍| 国产精品理论片在线观看| 亚洲综合无码一区二区| 日本在线不卡视频| 国产不卡高清在线观看视频| hitomi一区二区三区精品| 欧美在线视频不卡| 欧美成人精精品一区二区频| 国产精品久久一级| 亚洲一二三专区| 国产在线精品一区二区不卡了 | 欧洲亚洲精品在线| 欧美一区二区三区在线看| 国产视频视频一区| 亚洲国产综合视频在线观看| 麻豆精品一区二区av白丝在线| 东方aⅴ免费观看久久av| 一本一道综合狠狠老| 欧美一级一区二区| 亚洲欧美日韩小说| 激情五月播播久久久精品| 波多野结衣一区二区三区| 欧美久久一区二区| 国产欧美日韩视频在线观看| 午夜伊人狠狠久久| 99久久99久久免费精品蜜臀| 欧美大白屁股肥臀xxxxxx| 亚洲欧美怡红院| 国产一区二区三区四区五区入口|