#开头处常用模块

#!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如果是负值的话,就会从字符串右边开始指定字符。

    1. $s=substr("perl5",2,2);#这时$s="rl";
    2. $s=substr("perl5",2);#这时$s="rl5";
    3. $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常用总结的更多相关文章

  1. Perl常用语法

    本文主要为了方便阅读.编写perl脚本而记录的常用的命令.语法. 一.条件判断语法 注意,数字 0, 字符串 '0' . "" , 空 list () , 和 undef 为 fa ...

  2. perl常用代码

    字符串联结和重复操作符   联接: .  重复:x  联接且赋值(类似+=): .=例:  $newstring = "potato" . "head";  $ ...

  3. Perl常用特殊变量

    perl 内置变量 $- 当前页可打印的行数,属于Perl格式系统的一部分 $! 根据上下文内容返回错误号或者错误串 $” 列表分隔符 $# 打印数字时默认的数字输出格式 $$ Perl解释器的进程I ...

  4. perl 常用命令

    过滤重复字符 perl -e '$_=<STDIN>; @in = split; if (@in < 100){ @out = grep {! $hash{$_}++ } @in;  ...

  5. Perl 常用的小细节总结

    1.命令行:perl -c perl.pl  #用来检验Perl脚本有没有错误: 2.vi perl.pl打开脚本,ESC+:set nu 回车,给每行加上行号:

  6. perl常用字符串函数

    1.$position = index(string,substring,skipchars): 该函数返回子串substring在字符串string中的位置,如果不存在,则返回-1:参数skipch ...

  7. perl oneline

    可参考博客:http://blog.csdn.net/carzyer/article/details/5117429 Perl常用命令行参数概览 -e 指定字符串以作为脚本(多个字符串迭加)执行 -M ...

  8. 拾遗:Perl 基础语法

    Perl 常用的命令行参数 -i:将处理结果直接写入文件,可以通过 -i.bak 或 -i"/tmp/orig_*" 等形式,在修改之前进行备份 -e:启用 perl 的命令行模式 ...

  9. Perl入门(一)Perl的基本类型及运算符

    在学习Perl的基础之前,还是希望大家有空去看以下Perl的简介.百度百科 一.Perl的基本类型 Per的基本类型分为两种:数值型和字符串型. 数值型可细分为 整数型.如123. 浮点型.如123. ...

随机推荐

  1. Java 将word转为pdf jacob方式

    package com.doctopdf; import java.io.File; import com.jacob.activeX.ActiveXComponent; import com.jac ...

  2. Android无法删除项目+导入项目报错

    Android无法删除项目+导入项目报错 Android无法删除项目:关闭eclipse或关闭电脑,然后重启,继续删除就可以了 导入项目报错:右键–>配置–>中就可以看到了,更改一下就可以 ...

  3. Oracle工具——ADRCI

    ADRCI工具是Oracle11g才推出的新工具,主要用来管理alert文件.trace文件.dump文件.健康监事报告等. 这一篇简单介绍ADRCI工具. 用过11g的人都会发现,11g中alert ...

  4. Spring Enable* 注解

    Spring提供了一系列以Enable开头的注解,这些注解本质上是激活Spring的某些管理功能.比如,EnableWebMvc. 这个注解引入了MVC框架在Spring 应用中需要用到的所有bean ...

  5. MongoDB复制集原理、环境配置及基本测试详解

    一.MongoDB复制集概述 MongoDB复制集实现了冗余备份和故障转移两大功能,这样能保证数据库的高可用性.在生产环境,复制集至少包括三个节点,其中一个必须为主节点,一个从节点,一个仲裁节点.其中 ...

  6. Oracle11g 配置DG broker

    在配置DG broker之前需要确保Dataguard配置正常且主库和备库均使用spfile. 1. 主库配置 配置DG_BROKER_START参数 检查主库dg_broker_start设置 SQ ...

  7. C++ 11 多线程下std::unique_lock与std::lock_guard的区别和用法

    这里主要介绍std::unique_lock与std::lock_guard的区别用法 先说简单的 一.std::lock_guard的用法 std::lock_guard其实就是简单的RAII封装, ...

  8. ES6 数值

    数值的表示 二进制表示法新写法: 前缀 0b 或 0B . console.log(0b11 === 3); // true console.log(0B11 === 3); // true 八进制表 ...

  9. CSS弹性盒布局(display:flex)

    CSS弹性布局(display:flex) 参考: http://www.runoob.com/w3cnote/flex-grammar.html https://www.jianshu.com/p/ ...

  10. sql server自定义排序

    方法一: 比如需要对SQL表中的字段NAME进行如下的排序:张三(Z)李四(L)王五(W)赵六(Z) 按照sql中的默认排序规则,根据字母顺序(a~z)排,结果为:李四  王五 赵六 张三 自定义排序 ...