如何用perl实现文件的格式由dos格式转换为unix格式

如何用perl实现文件的格式由dos格式转换为unix格式

如题。请高手不吝赐教,谢过先~~
#!/usr/bin/perl -wi

#
# 功能:
#   将源程序中的Tab扩展为空格,或将程序中多余的空格还原为Tab。
#
# 说明:
#   缺省的tab长度为4。
#
# 使用举例:
#
#   myet main.c             // 将main.c中的Tab扩展为空格
#   myet -t 8 main.c        // 每个Tab字符相当于8个空格,而不是缺省的4个
#
#   myet -r main.c          // 将main.c中的空格还原为Tab
#   myet -r -t 6 main.c     // 将main.c中的空格还原为Tab,每个Tab字符相当于6个空格
#

use strict;
use Getopt::Std;

use Text::Tabs;
$tabstop = 4;               # 缺省的Tab长度为4

my %hOpts;

getopts( "rt:", \%hOpts );
$tabstop = $hOpts{ t } if $hOpts{ t };

if ( $hOpts{ r } ) {
# 将空格还原为Tab
    while ( <> )
    {   print unexpand( $_ );   }
} else {
# 将Tab扩展为空格
    while ( <> ) {
        while ( $_ =~ s/\t+/' ' x ( length( $& ) * $tabstop - length( $` ) % $tabstop )/e ) {
            # 空循环,直到不再匹配为止
        }
        print;
    }
}   # end of else

#!/usr/bin/perl -pi

BEGIN {
    undef $/;
}

s/\r\n/\n/g;
用linux 上的 dos2unix 命令就可以了
cat yourfile | perl -nle 's/\r//; print'
在windows下的转换方法和在unix下似乎是不同的

------------------------------------------------------------------
uinx下有命令

SYNOPSYS
       dos2unix [options] [-c convmode] [-o file ...] [-n infile outfile ...]
       Options:
       [-hkqV] [--help] [--keepdate] [--quiet] [--version]


DESCRIPTION
       dos2unix, the program that converts plain
       text files in DOS/MAC format to UNIX format.


-------------------------------------------------------------------
windows下我现在知道的方法是要用二进制打开文件,然后转换成十六进制,然后用0a替换0d0a

不知道还有什么好的方法不??
open(UNIX, '>:unix', 'unix.txt');

这样往里面 写的 文本 就是 unix格式的了
好像转换中文会乱码.
有这么复杂吗?

* dos2unix
  perl -pi.bak -e 's/\r\n/\n/g' foo

* unix2dos
  perl -pi.bak -e 's/[^\r]\n/\r\n/g' foo