注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

云之南

风声,雨声,读书声,声声入耳;家事,国事,天下事,事事关心

 
 
 

日志

 
 
关于我

专业背景:计算机科学 研究方向与兴趣: JavaEE-Web软件开发, 生物信息学, 数据挖掘与机器学习, 智能信息系统 目前工作: 基因组, 转录组, NGS高通量数据分析, 生物数据挖掘, 植物系统发育和比较进化基因组学

网易考拉推荐

/usr/bin/perl^M: bad interpreter: No such file or directory  

2009-11-04 19:44:02|  分类: linux&shell |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
今天执行 ./shuffleSequences.pl 遇到 /usr/bin/perl^M: bad interpreter: No such file问题,在网上找了找英文和中文的
问题决。
说法挺多。用vi shuffleSequences.pl 有的第一行是#!/usr/bin/perl -w时就出这个问题,改成#!/usr/bin/perl后就没问题的。我的第一行就是#!/usr/bin/perl,改成#!/usr/bin/perl -w,居然就没问题了。转 的文章 如下:
http://emmune.appspot.com/2009/08/31/CtrlM.html

/usr/bin/perl^M: bad interpreter: No such file or directory

八月 31st, 2009

前 段时间摆弄服务器,遇到很多问题。当时go2china8还能用,一一记下后越墙发到了狗窝随笔上。最近好像go2china8也和谐了,只好在这儿一面 之词了。最近遇到的这个问题,很奇怪。一个perl脚本,运行后返回/usr/bin/perl^M: bad interpreter: No such file or directory。网上查,说法挺多。有的第一行是#!/usr/bin/perl -w时就出这个问题,改成#!/usr/bin/perl后就没问题的。我的第一行就是#!/usr/bin/perl,改成#!/usr/bin /perl -w,居然就没问题了。奇了怪了。忽然想起3年前在日本使用的solaris9系统服务器时似乎也遇到了同样问题。翻出就日志一看,应该就是 windows与unix文本文件格式不同所致。现摘抄我的旧文如下。当时我用的居然是英文。

Be aware that UNIX text file format is different from Windows system

The UNIX and DOS operating systems (which includes Microsoft Windows) differ in the format in which they store text files. DOS places both a line feed and a carriage return character at the end of each line of a text file, but Unix uses only a line feed character. Some DOS applications need to see carriage return characters at the ends of lines, and may treat Unix-format files as giant single lines. Some Unix applications won't recognize the carriage returns added by DOS, and will display Ctrl-m characters at the end of each line. This appears on the screen as ^M.

On systems using SunOS, the utilities dos2unix and unix2dos are available. These utilities provide a straightforward method for converting files from the Unix command line. To use either command, simply type the command followed by the name the file you wish to convert, and the name of a file which will contain the converted results. Thus, to convert a DOS file to a Unix file, at the Unix prompt, enter: dos2unix dosfile.txt unixfile.txt. To convert a Unix file to DOS, enter: unix2dos unixfile.txt dosfile.txt. Note that these utilities are only available on SunOS systems.

To convert a DOS text file to a Unix text file using Perl, at the Unix shell prompt, enter: perl -p -e 's/\r$//' < dosfile.txt > unixfile.txt. To convert from a Unix text file to a DOS text file with Perl, at the Unix shell prompt, enter: perl -p -e 's/$/\r/' < unixfile.txt > dosfile.txt. Please note that you must use single quotation marks in either command line.  This prevents your shell from trying to evaluate anything inside.

我 想linux是与时俱进的,于是在在bash中输入,which dos2unix,返回/usr/bin/dos2unix,同样unix2dos也有的。哈哈,看来these utilities are not only available on SunOS systems. 不过命令似乎更简单,只需要dos2unix dosfile,结果dosfile自动变成了了unix format的了。运行perl脚本,一切OK!

因此,我的如下修改了:  

从windows的文件格式转换成linux下的文件格式:

perl -p -e 's/\r$//' < dosfile.txt > unixfile.txt

从linux的文件格式转换成windows下的文件格式:

perl -p -e 's/$/\r/' < unixfile.txt > dosfile.txt

OK!





  评论这张
 
阅读(5623)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2016