perl的缺点在于正是因为Perl的灵活性和“过度”的冗余语法,因此获得了仅写的“美誉”,因为Perl程序可以写得很随意(例如,变量不经声明就可以直接使用),但是可能少写一些字母就会得到意想不到的结果(而不报错),许多Perl程序的代码令人难以阅读,实现相同功能的程序代码长度可以相差十倍百倍,这就令程序的维护者(甚至是编写者)难以维护。
同样的,因为Perl这样随意的特点,可能会导致一些Perl程序员遗忘语法,以至于不得不经常查看Perl手册。对此,《Learning Perl》一书里建议经常使用Perl编程。
建议的解决方法是在程序里使用use strict;以及use warnings;,并统一代码风格,使用库,而不是自己使用“硬编码”。Perl同样可以将代码书写得像Python或Ruby等语言一样优雅。
my %data;
while(<DATA>)
{
chomp;#去掉回车
@m=split;#以空格分隔
if(exists $data{$m[0]})#如果已经炊ㄒ
{
for(1$#m){
if($data{$m[0]}->[$_-1] ne $m[$_]){#已定义判断后续变量是否存在不存在则添加
$data{$m[0]}->[$_-1] = "/$m[$_]";
}
}
}
else#未定义直接添加
{
$data{$m[0]}=[@m[1$#m]];
}
}
for(keys %data)
{
print "$_ @{$data{$_}}\n";
}
__DATA__
a b 1 2 3
a b 2 2 5
open(FILE1,"E:/test1txt");
open(FILE2,"E:/test2txt");
open(FILE3,"+>","E:/test3txt");
@array=<FILE1>;;如果test2里面只是一行一个号码的话这样是可以的
for $i(0$#array)#如果不是的话要进行信息的提取
{
$m=chomp($array[$_]);
@v=split(" ",$m);
$hash{$v[]}=$i;
}
while(<FILE2>)
{@v=split;
($name,$address,$number,$another)=@v;
if(exists $hash{$name})#可能你是这个意思吧将两个记录信息都添加到文件中
{
print FILE3 "@v \n$array[$hash[$name]]\n";
}
}
Perl 填补了低级语言(如C,C++,汇编语言)和高级语言(如shell 编程)的空白。低级语言通常难于编码,并且丑陋,但速度快,且无限制;高级语言,在速度上,很难超过书写良好的低级语言。在低级语言里,你几乎能完成任何事。高级语言,正好相反,一般速度慢,困难,丑陋,有限制;如果没有系统提供的函数,shell,批处理语言能完成的工作相当有限。Perl 简单,几乎是无限制的,速度快,也有些丑陋。
小骆驼书 learning perl中的所有知识都必须掌握。
#!/usr/bin/perl -w
use strict; #使用 strict 校验语法
my $file=shift; #读取执行程序时的第一个参数作为变量 $file 这里应该是指文件名
open IN,$file;
while(my $line=<IN>){ #打开并读取文件的内容
chomp($line); #去掉每一行结尾的换行符
my $t2=$line=~tr/ATGC/TACG/; #统计这一行中ATGC的次数 他程序有问题 应该是 $t2=($line=~s/ATGC/TACG/g);
print $t2,"\n"; #输出次数结果
}
试了一下 他这个程序有问题 是统计每一行的ATGC的出现次数 而且不对, 不应该用tr,, 应该用s
我改了一下
#!/usr/bin/perl -wmy $file=shift;
open IN,$file;
my @line=<IN>; #读取整个文件到数组
my $lines=join("-",@line); #把数组合并成一个字符串
my $t2=($lines=~s/ATGC/TACG/g); #在这个大字符串中统计ATGC出现的次数
print "$t2\n";
我这个是统计整个文件中ATGC出现的次数的
在我的下载器上运行了一下 貌似没问题
root@Nas:~# cat atxtATGC
111ATGC222
111222ATGC ATGC
TACG
root@Nas:~#
root@Nas:~# /testpl atxt
4
root@Nas:~#
global symbol requires explicit package name
全局符号需要显式包名
重点词汇释义
global symbol全局符号
explicit明确的,清楚的; 直言的; 详述的; 不隐瞒的
package包装; 把…装箱; 向…提出一揽子计划; 包裹; 包装袋; 包装盒; 一组建议
你得具体点说一下你是怎样运行的, 你是用 notepad++自带的 run, 还是用外挂的 nppexec,
你输入的运行指令是怎样的 或者你先检查一下有没有将路径的 '\' 写成了 '/', 又或者有没有只写了 perl $(FULL_CURRENT_PATH) 而忘了
perl "$(FULL_CURRENT_PATH)" <-- 有引号的
而你用 notepad++ 的话, 就当你是用 windows 了, 那麼 #!/ 那句其实就不必了
Perl是典型的脚本语言,短小精悍,非常容易上手,尤其适合处理文本,数据,以及系统管理。它在老一辈的生物信息学分析人员中非常流行,出于历史遗留原因大家肯定会或多或少地接触 Perl,即使你再怎么推崇Python或者GO等新兴编程语言。
1 入门资料
两个半小时入门指导:>
以上就是关于perl语言的缺点是什么全部的内容,包括:perl语言的缺点是什么、perl编程、Perl语言有什么特点语法上有什么独特的地方必须掌握有什么值得学习、不能错过的优点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)