perl语言的缺点是什么

perl语言的缺点是什么,第1张

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 -w

my $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 atxt

ATGC

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语言有什么特点语法上有什么独特的地方必须掌握有什么值得学习、不能错过的优点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9636715.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存