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

📄 lineends.pl

📁 linux subdivision ying gai ke yi le ba
💻 PL
字号:
#!/usr/local/bin/perl##  Heuristically converts line endings to the current OS's preferred format#  #  All existing line endings must be identical (e.g. lf's only, or even#  the accedental cr.cr.lf sequence.)  If some lines end lf, and others as#  cr.lf, the file is presumed binary.  If the cr character appears anywhere#  except prefixed to an lf, the file is presumed binary.  If there is no #  change in the resulting file size, or the file is binary, the conversion #  is discarded.#  #  Todo: Handle NULL stdin characters gracefully.#use IO::File;use File::Find;# The ignore list is '-' seperated, with this leading hyphen and# trailing hyphens in ever concatinated list below.$ignore = "-";# Image formats$ignore .= "gif-jpg-jpeg-png-ico-bmp-";# Archive formats$ignore .= "tar-gz-z-zip-jar-war-";# Many document formats$ignore .= "eps-psd-pdf-ai-";# Some encodings$ignore .= "ucs2-ucs4-";# Some binary objects$ignore .= "class-so-dll-exe-obj-";# Some build env files in NW/Win32$ignore .= "mcp-xdc-ncb-opt-pdb-ilk-sbr-";$preservedate = 1;$forceending = 0;$givenpaths = 0;$notnative = 0;while (defined @ARGV[0]) {    if (@ARGV[0] eq '--touch') {        $preservedate = 0;    }    elsif (@ARGV[0] eq '--nocr') {        $notnative = -1;    }    elsif (@ARGV[0] eq '--cr') {        $notnative = 1;    }    elsif (@ARGV[0] eq '--force') {        $forceending = 1;    }    elsif (@ARGV[0] eq '--FORCE') {        $forceending = 2;    }    elsif (@ARGV[0] =~ m/^-/) {        die "What is " . @ARGV[0] . " supposed to mean?\n\n" 	  . "Syntax:\t$0 [option()s] [path(s)]\n\n" . <<'OUTCH'Where:	paths specifies the top level directory to convert (default of '.')	options are;	  --cr     keep/add one ^M	  --nocr   remove ^M's	  --touch  the datestamp (default: keeps date/attribs)	  --force  mismatched corrections (unbalanced ^M's)	  --FORCE  all files regardless of file name!OUTCH    }    else {        find(\&totxt, @ARGV[0]);	print "scanned " . @ARGV[0] . "\n";	$givenpaths = 1;    }    shift @ARGV;}if (!$givenpaths) {    find(\&totxt, '.');    print "did .\n";}sub totxt {        $oname = $_;	$tname = '.#' . $_;        if (!-f) {            return;        }	@exts = split /\./;	if ($forceending < 2) {            while ($#exts && ($ext = pop(@exts))) {                if ($ignore =~ m|-$ext-|i) {                    return;                }	    }        }	@ostat = stat($oname);        $srcfl = new IO::File $oname, "r" or die;	$dstfl = new IO::File $tname, "w" or die;        binmode $srcfl; 	if ($notnative) {            binmode $dstfl;	} 	undef $t;        while (<$srcfl>) {             if (s/(\r*)\n$/\n/) {		$n = length $1;		if (!defined $t) { 		    $t = $n; 		}		if (!$forceending && (($n != $t) || m/\r/)) {		    print "mismatch in " .$oname. ":" .$n. " expected " .$t. "\n";		    undef $t;		    last;		}	        elsif ($notnative > 0) {                    s/\n$/\r\n/;                 }            }	    print $dstfl $_; 	}	if (defined $t && (tell $srcfl == tell $dstfl)) {	    undef $t;	}	undef $srcfl;	undef $dstfl;	if (defined $t) {            unlink $oname or die;            rename $tname, $oname or die;            @anames = ($oname);            if ($preservedate) {                utime $ostat[9], $ostat[9], @anames;            }            chmod $ostat[2] & 07777, @anames;            chown $ostat[5], $ostat[6], @anames;            print "Converted file " . $oname . " to text in " . $File::Find::dir . "\n"; 	}	else {	    unlink $tname or die;	}}

⌨️ 快捷键说明

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