默认状态下,很显然都是用\n来区分行,\n也被我们称作为换行符。

当读取序列时,按行来读取时,就是以换行符为标准。

读取的strawberry1.gb的文件内容如下:

LOCUS JX118024 460 bp DNA linear PLN 25-SEP-2012

DEFINITION Fragaria vesca subsp. americana RNA polymerase beta subunit (rpoC1)

gene, partial cds; plastid.

/

ACCESSION JX118024

//

VERSION JX118024.1 GI:402238751

KEYWORDS .

how

///

SOURCE plastid Fragaria vesca subsp. americana

第一个例子:默认情况

代码如下:

#!/bin/perl

my $record =' ';

open (DNAFILENAME,'f:\\perl\\strawberry1.gb')||die("can not open the file!");

$record = <DNAFILENAME>;

print $record;

这个就是没有任何的改动的情况,也就是默认的每次读取一行,结果如下:

F:\>perl\b.pl

LOCUS JX118024 460 bp DNA linear PLN 25-SEP-2012

如果我们对$/的值给改变一下,按照我们文件的特征,我们先改动为$/=“///\n;

代码如下:

#!/bin/perl

my $record =' ';

open (DNAFILENAME,'f:\\perl\\strawberry1.gb')||die("can not open the file!");

$/="///\n";

$record = <DNAFILENAME>;

print $record;

我们得到的结果如下:

F:\>perl\b.pl

LOCUS JX118024 460 bp DNA linear PLN 25-SEP-2012

DEFINITION Fragaria vesca subsp. americana RNA polymerase beta subunit (rpoC1)

gene, partial cds; plastid.

/

ACCESSION JX118024

//

VERSION JX118024.1 GI:402238751

KEYWORDS .

how

///

我们可以看到在这里,这一行是以///为分隔符的,///以上的整个部分都被看成一行。

同样不仅是字符可以作为分隔符,字母也可以,加入我们以how为分隔符,$/="how\n";

代码如下:

#!/bin/perl

my $record =' ';

open (DNAFILENAME,'f:\\perl\\strawberry1.gb')||die("can not open the file!");

$/="how\n";

$record = <DNAFILENAME>;

print $record;

结果如下:

C:\Documents and Settings\Administrator>f:perl\b.pl

LOCUS JX118024 460 bp DNA linear PLN 25-SEP-2012

DEFINITION Fragaria vesca subsp. americana RNA polymerase beta subunit (rpoC1)

gene, partial cds; plastid.

/

ACCESSION JX118024

//

VERSION JX118024.1 GI:402238751

KEYWORDS .

how

C:\Documents and Settings\Administrator>

同样我们也可以完全抛弃传统意义上的行,例如,我们以例子中的第五行的ACCESSION为分隔符:

代码如下:

#!/bin/perl

my $record =' ';

open (DNAFILENAME,'f:\\perl\\strawberry1.gb')||die("can not open the file!");

$/="ACCESSION";

$record = <DNAFILENAME>;

print $record;

结果如下:

F:\>perl\b.pl

LOCUS JX118024 460 bp DNA linear PLN 25-SEP-2012

DEFINITION Fragaria vesca subsp. americana RNA polymerase beta subunit (rpoC1)

gene, partial cds; plastid.

/

ACCESSION

F:\>

再来看一个例子:以/\n为分隔符:

代码如下:

#!/bin/perl

my $record =' ';

open (DNAFILENAME,'f:\\perl\\strawberry1.gb')||die("can not open the file!");

$/="/\n";

$record = <DNAFILENAME>;

print $record;

我们期望的结果应该是配匹到第四行以前的内容为一行,但是结果是否如此?

F:\>perl\b.pl

LOCUS JX118024 460 bp DNA linear PLN 25-SEP-2012

DEFINITION Fragaria vesca subsp. americana RNA polymerase beta subunit (rpoC1)

gene, partial cds; plastid.

/

ACCESSION JX118024

//

F:\>

为什么没有匹配到第一个/ 呢?

其实这里/这一行并不是仅仅有一个/,而是还有其他的成分在这里,我们把这一行完全删除,然后重新只输入一个/,我们再来匹配

F:\>perl\b.pl

LOCUS JX118024 460 bp DNA linear PLN 25-SEP-2012

DEFINITION Fragaria vesca subsp. americana RNA polymerase beta subunit (rpoC1)

gene, partial cds; plastid.

/

F:\>

这次就得到正确的结果了。

详细出处参考:http://www.jb51.net/article/34927.htm

【转】perl 变量 $/ 的用法解析 上下文为行模式时,$/ 定义以什么来区分行的更多相关文章

  1. perl 变量 $/ 的用法解析

    默认状态下,很显然都是用\n来区分行,\n也被我们称作为换行符.当读取序列时,按行来读取时,就是以换行符为标准. perl中"行"的概念就由$/决定. { $data = &quo ...

  2. extern "c"用法解析

    转自: extern "c"用法解析 - 简书 引言 C++保留了一部分过程式语言的特点,因而它可以定义不属于任何类的全局变量和函数.但是,C++毕竟是一种面向对象的程序设计语言, ...

  3. WordPress的have_posts()和the_post()用法解析

    原文地址:http://www.phpvar.com/archives/2316.html 网上找到一篇介绍WordPress的have_posts()和the_post()用法解析的文章,觉得不错! ...

  4. extern "C" 用法解析

    extern "c"用法解析 作者 作者Jason Ding ,链接http://www.jianshu.com/p/5d2eeeb93590 引言 C++保留了一部分过程式语言的 ...

  5. mysql group by 用法解析(详细)

    在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的 ...

  6. (转载)mysql group by 用法解析(详细)

    (转载)http://blog.tianya.cn/blogger/post_read.asp?BlogID=4221189&PostID=47881614 mysql distinct 去重 ...

  7. group by 用法解析

    group by 用法解析 group by语法可以根据给定数据列的每个成员对查询结果进行分组统计,最终得到一个分组汇总表. SELECT子句中的列名必须为分组列或列函数.列函数对于GROUP BY子 ...

  8. sql中的group by 和 having 用法解析

    转载博客:http://www.cnblogs.com/wang-123/archive/2012/01/05/2312676.html --sql中的group by 用法解析:-- Group B ...

  9. C/C++之extern "C"的用法解析

    extern "C"的用法解析 http://blog.sina.com.cn/u/494a1ebc010004g5 C++中extern “C”含义深层探索 1.引言 C++语言 ...

随机推荐

  1. mount: can't find cdrom in /etc /fstab or /etc/mtab

    我用的linux操作系统类别是CentOS-6.5 首先在虚拟机选项的设置里设置CD/DVD选项其中勾选Connect at power on选项 在连接中选择Use ISO image file:即 ...

  2. Struts2的零配置和rest插件

    1. 零配置使用struts2-convention-plugin-2.3.16.jar,rest使用struts2-rest-plugin-2.3.16.jar 1.1 Struts2的conven ...

  3. poj 2723 2-SAT问题

    思路:二分枚举能开的门的数量,将每次枚举转换成2-SAT问题.这里存在的矛盾是假设有门上a,b两个锁,a锁对应于1号钥匙,而一号钥匙的配对是2号钥匙,b锁对应于3号钥匙,3号的配对是4号钥匙.那么2号 ...

  4. ListView使用自定义适配器的情况下实现适配器的文本和图标控件点击事件执行Activity界面中的方法

    ListView使用的是自定义适配器,列表项的布局文件中含有文本和图标,实现文本区域和图标区域的点击事件. 实现思路:在自定义适配器MyArrayAdapter 类型中自定义接口和接口方法,分别设置文 ...

  5. Hexo中添加emoji表情

    国庆的三天假前,都是玩CF和LOL的无限乱斗过来的,输了怨没随机到好的英雄,赢了就高高兴兴的

  6. BZOJ 3505

    3505: [Cqoi2014]数三角形 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1171  Solved: 703[Submit][Statu ...

  7. tomcat 安装

    升级系统之后很长一段时间没有用tomcat(主要是没做东西),这两天要开始干活了,发现竟然没法发用了....ok,重新整一遍.算是温习. 上次所有环境的搭建基本都是师兄帮我,自己做得东西很少,这次就正 ...

  8. Java Concurrency - java.util.concurrent API Class Diagram

    摘自: www.uml-diagrams.org Here we provide several UML class diagrams for the Java™ 7 java.util.concur ...

  9. Commons Lang - StringUtils

    Operations on String that are null safe. IsEmpty/IsBlank - checks if a String is empty (判断字符串是否为空) T ...

  10. 【Ionic】---AngularJS扩展基本布局

    目录: 标题栏 : ion-header-bar 页脚栏 : ion-footer-bar header/footer : 样式及内容 内容区 : ion-content 滚动框 : ion-scro ...