perl常用总结
#开头处常用模块
#!usr/bin/perl
use warnings;
use strict;
use Getopt::Long;
use File::Basename;
use PerIO::gzip;
#open IN,"<:gzip","$in" or die " $in:$!"; #打开的是一个gzip压缩文件,即$in是file.gz文件
use Cwd;
#外部参数设置“模块”—— “use Getopt::Long; ”(另有详解)
my ($indir,$rep,$dep,$out);
GetOptions(
"indir:s" => \$indir,
"rep:s" => \$rep,
"dep:i" => \$dep,
"out:s" => \$out,
);
#说明“模块-1”
=head1 name
myfile,pl
#介绍此脚本功能
=head1 example
perl myfile.pl -参数1 ******** -参数2 ********* -参数 ******** 2>myfile.log
=head1 description #如果,使用Getop::Long模块,一般此处为参数解释说明
-参数1 <str> ********
-参数2 [str] ********
-参数3 [int] ********
-参数4 [flt] ********
-参数 ********
-help help
=head1 author
839365149@qq.com
=head1 version
1.0 2017-07-15 15:00
=cut
die `pod2text $0` if ( $help ); # 当用户有输入 -help参数时,进行输出上边的=head1 ...=head1 ......=cut框架中的信息;
die `pod2text $0` unless ($fq1 && $list1); # 用于缺少指定的必须参数时,进行报错,输出上边的=head1 ...=head1 ......=cut框架中的信息;
# `command`
# Perl使用反引号调用外部命令(命令行命令)能够捕获其标准输出,并按行返回且每行结束处附带一个回车。反引号中的变量在编译时会被内插为其值。
# pod2text 是命令行函数 #功能输出处理对象(脚本)中的的=head1 ...=head1 ......=cut框架中的信息
#说明“模块-2”
my $usage=<<USAGE;
Usage : $0
-indir : directory for input files
-rep : repeat rate[1.5]
-dep : depth[0]
-out : outfile
USAGE
#显示时间信息
my $time=`date`; # date 命令行函数,输出时间
print STDERR "|-- Start $0 at time: ".$time."\n"; # $0指代的就是myfile.pl脚本
#注释框信息——任意发挥你想要的解释or提示作用
eg1:解释文件格式
#####adapter.list format#########################################################################
# FC81CCCABXX:3:1101:1235:2198#ACTTGAAT/1 49 31 48 iPE-3+ 34 0 17 18 0
# reads_id reads_len reads_start reads_end adapter_id adapter_len adapter_start adapter_end align_len mismatch
############################################################################################
#内部全局参数设置及初始化
my($name,$place,$num);
#内部全局Perl取整、四舍五入、向上取整、向下取整
取整int
四舍五入round
向上取整POSIX::ceil
向下取整就是int或者POSIX::floor
其中ceil和floor,要使用库POSIX,在perl源代码里加入
#!/usr/bin/perl
use strict;
use warnings;
use POSIX;
#打开外部文件
if($methy=~/\.gz$/){
open IN,"<:gzip",$methy || die $!;
}
else{
open IN,$methy || die $!;
}
#打开输出文件
if($cout =~ /.gz$/){open OT,">:gzip",$cout;}else{open OT,">$cout";}
#while循环
while(<IN>){
chomp($_); #去掉换行符字符
next if($_ eq "");#跳过空行
next if($_=~/^$/)#跳过空行
last if(not defined $_); #跳过不含字符(包含换行符、空格、空行等)和数值的行,defined判断变量(无论这个变量是否被定义)是否为空(即不包含任何字符和数值)。
}
#for循环
for( $a = 0; $a < 10; $a = $a + 1 ){
print "a 的值为: $a\n";
}
#split方便用法
my $chromosome_2 = (split /\./,$chromosome)[0];
my ($id, $strand, $chr) = (split /\t/)[0..2]; #以空格为分割标准为 /\t/
my ($id, $strand, $chr) = (split /\s+/)[0..2]; #以空格为分割标准为 /\s+/
#偶尔用,但很容易忘记的字符串截取命令substr()
语法:substr($string,offset,length)
offset代表起始字符的位置,length代表引用的字符串长度,如果省略length则代表从起始值到字符串的最后一个字符长度。而offset如果是负值的话,就会从字符串右边开始指定字符。
- $s=substr("perl5",2,2);#这时$s="rl";
- $s=substr("perl5",2);#这时$s="rl5";
- $s=substr("perl5",-2,2);#这时$s="er";
PS:
#一些特殊符号的意义
$0 #指代的就是运行的*.pl 或者 /dir1/dir2/*.pl,即命令行 perl *.pl 或者 perl /dir1/dir2/*.pl
$? #如果,报错,$?会产生一个数值,可用下边的perl脚本纠错,查出$?产出的数值是代表什么报错(这个脚本内容没搞明白!)
if ($? == -1) {
print "failed to execute: $!\n";
}
elsif ($? & 127) {
print "child died with signal %d, %s coredump\n",($? & 127), ($? & 128) ? 'with' : 'without';
}
else {
print "child exited with value %d\n", $? >> 8;
}
$! #直接文字报错说明原因
die “$!” #打印$!值,并结束整个进程 #他自带换行符
perl常用总结的更多相关文章
- Perl常用语法
本文主要为了方便阅读.编写perl脚本而记录的常用的命令.语法. 一.条件判断语法 注意,数字 0, 字符串 '0' . "" , 空 list () , 和 undef 为 fa ...
- perl常用代码
字符串联结和重复操作符 联接: . 重复:x 联接且赋值(类似+=): .=例: $newstring = "potato" . "head"; $ ...
- Perl常用特殊变量
perl 内置变量 $- 当前页可打印的行数,属于Perl格式系统的一部分 $! 根据上下文内容返回错误号或者错误串 $” 列表分隔符 $# 打印数字时默认的数字输出格式 $$ Perl解释器的进程I ...
- perl 常用命令
过滤重复字符 perl -e '$_=<STDIN>; @in = split; if (@in < 100){ @out = grep {! $hash{$_}++ } @in; ...
- Perl 常用的小细节总结
1.命令行:perl -c perl.pl #用来检验Perl脚本有没有错误: 2.vi perl.pl打开脚本,ESC+:set nu 回车,给每行加上行号:
- perl常用字符串函数
1.$position = index(string,substring,skipchars): 该函数返回子串substring在字符串string中的位置,如果不存在,则返回-1:参数skipch ...
- perl oneline
可参考博客:http://blog.csdn.net/carzyer/article/details/5117429 Perl常用命令行参数概览 -e 指定字符串以作为脚本(多个字符串迭加)执行 -M ...
- 拾遗:Perl 基础语法
Perl 常用的命令行参数 -i:将处理结果直接写入文件,可以通过 -i.bak 或 -i"/tmp/orig_*" 等形式,在修改之前进行备份 -e:启用 perl 的命令行模式 ...
- Perl入门(一)Perl的基本类型及运算符
在学习Perl的基础之前,还是希望大家有空去看以下Perl的简介.百度百科 一.Perl的基本类型 Per的基本类型分为两种:数值型和字符串型. 数值型可细分为 整数型.如123. 浮点型.如123. ...
随机推荐
- 微信小程序开发笔记01
微信小程序开发的优势 1,不用安装,即开即用,用完就走.省流量,省安装时间,不占用桌面: 2,体验上虽然没法完全媲美原生APP,但综合考虑还是更优: 3,对于小程序拥有者来说,开发成本更低,他们可以更 ...
- python全栈开发 * 33 知识点汇总 * 180718
33 udp协议编码 显示客户端名字,输出带颜色的内容 udp协议的时间同步机制 #一.udp 协议编码 一个服务器,多个客户端#服务器:# import socket# sk=socket.sock ...
- php钩子原理和实现
2017年3月18日17:22:52 php版本 5.6.27 5.3以下和5.3以上的版本在PHP类与对象区别很大,请注意 其实原理很简单,有些人把事情弄的过于发杂,其实就是调用某个目录下的比如/h ...
- Feign 重试解析
Spring cloud Feign 在restful 调用失败后,会进行重试.在没有到达指定重试次数,会一直重试. @Override public Object invoke(Object[] a ...
- The missing package manager for macOS (or Linux)
The missing package manager for macOS (or Linux) — Homebrew https://brew.sh/
- UCloud首尔机房整体热迁移是这样炼成的
小结: 1.把两个机房在逻辑上变成一个机房: 2.新老机房的后端服务使用同一套 ZooKeeper,但是配置的却是不同的 IP: 3.UCloud内部服务所使用的数据库服务为MySQL, 内部MySQ ...
- 学习笔记:Makefile的ifeq逻辑或,逻辑与的变通实现
(1)ifeq的用法 ifeq ($(变量名), 变量值 ) ........ else ifeq ($(..), ..) ......... else ......... endif (2) ...
- python 关于 input
name = input("请输入你的姓名:") print(name) 解释:input表示输入,当你输入一个名字的时候, 它打印出来的东西,也就是你输入的东西, 结果: 请输入 ...
- cocos2d-x JS 重力感应监听事件
说明 : 下面监听中的 acc属性 里面有很多可以使用的值 . 添加监听 : cc.inputManager.setAccelerometerEnabled(true); cc.eventManage ...
- 大数据Spark+Kafka实时数据分析案例
本案例利用Spark+Kafka实时分析男女生每秒购物人数,利用Spark Streaming实时处理用户购物日志,然后利用websocket将数据实时推送给浏览器,最后浏览器将接收到的数据实时展现, ...