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

📄 command.pm

📁 UNIX下perl实现代码
💻 PM
字号:
package ExtUtils::Command;use 5.005_64;use strict;# use AutoLoader;use Carp;use File::Copy;use File::Compare;use File::Basename;use File::Path qw(rmtree);require Exporter;our(@ISA, @EXPORT, $VERSION);@ISA     = qw(Exporter);@EXPORT  = qw(cp rm_f rm_rf mv cat eqtime mkpath touch test_f);$VERSION = '1.01';=head1 NAMEExtUtils::Command - utilities to replace common UNIX commands in Makefiles etc.=head1 SYNOPSIS  perl -MExtUtils::Command -e cat files... > destination  perl -MExtUtils::Command -e mv source... destination  perl -MExtUtils::Command -e cp source... destination  perl -MExtUtils::Command -e touch files...  perl -MExtUtils::Command -e rm_f file...  perl -MExtUtils::Command -e rm_rf directories...  perl -MExtUtils::Command -e mkpath directories...  perl -MExtUtils::Command -e eqtime source destination  perl -MExtUtils::Command -e chmod mode files...  perl -MExtUtils::Command -e test_f file=head1 DESCRIPTIONThe module is used in the Win32 port to replace common UNIX commands.Most commands are wrappers on generic modules File::Path and File::Basename.=over 4=cutsub expand_wildcards{ @ARGV = map(/[\*\?]/ ? glob($_) : $_,@ARGV);}=item cat Concatenates all files mentioned on command line to STDOUT.=cut sub cat (){ expand_wildcards(); print while (<>);}=item eqtime src dstSets modified time of dst to that of src=cut sub eqtime{ my ($src,$dst) = @ARGV; open(F,">$dst"); close(F); utime((stat($src))[8,9],$dst);}=item rm_f files....Removes directories - recursively (even if readonly)=cut sub rm_rf{ rmtree([grep -e $_,expand_wildcards()],0,0);}=item rm_f files....Removes files (even if readonly)=cut sub rm_f{ foreach (expand_wildcards())  {   next unless -f $_;           next if unlink($_);   chmod(0777,$_);              next if unlink($_);   carp "Cannot delete $_:$!";  }}=item touch files ...Makes files exist, with current timestamp =cut sub touch{ expand_wildcards(); my $t    = time; while (@ARGV)  {   my $file = shift(@ARGV);                  open(FILE,">>$file") || die "Cannot write $file:$!";   close(FILE);   utime($t,$t,$file);  }}=item mv source... destinationMoves source to destination.Multiple sources are allowed if destination is an existing directory.=cut sub mv{ my $dst = pop(@ARGV); expand_wildcards(); croak("Too many arguments") if (@ARGV > 1 && ! -d $dst); while (@ARGV)  {   my $src = shift(@ARGV);                  move($src,$dst);  }}=item cp source... destinationCopies source to destination.Multiple sources are allowed if destination is an existing directory.=cut sub cp{ my $dst = pop(@ARGV); expand_wildcards(); croak("Too many arguments") if (@ARGV > 1 && ! -d $dst); while (@ARGV)  {   my $src = shift(@ARGV);                  copy($src,$dst);  }}=item chmod mode files...Sets UNIX like permissions 'mode' on all the files.=cut sub chmod{ my $mode = shift(@ARGV); chmod($mode,expand_wildcards()) || die "Cannot chmod ".join(' ',$mode,@ARGV).":$!";}=item mkpath directory...Creates directory, including any parent directories.=cut sub mkpath{ File::Path::mkpath([expand_wildcards()],0,0777);}=item test_f fileTests if a file exists=cut sub test_f{ exit !-f shift(@ARGV);}1;__END__ =back=head1 BUGSShould probably be Auto/Self loaded.=head1 SEE ALSO ExtUtils::MakeMaker, ExtUtils::MM_Unix, ExtUtils::MM_Win32=head1 AUTHORNick Ing-Simmons <F<nick@ni-s.u-net.com>>.=cut

⌨️ 快捷键说明

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