默认状态下,很显然都是用\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. [课程相关]homework-04

    零.准备工作 这次的作业仍然是结对编程,我们队伍的成员为:梁杰.夏天晗.谢祖三.上次我们是选择了一个时间大家聚在一起进行编程,效果不错,所以这次我们还是决定采用这种方式.由于大家平时比较忙,这周六日我 ...

  2. Halcon C++混合编程学习之Qt 实现检测焊接点

    1 # include "HalconCpp.h" # include "HDevThread.h" # include <X11/Xlib.h> ...

  3. Adobe Edge Animate –修改Edge Commons Spotlight功能,使之能支持播放中国网站视频

    Adobe Edge Animate –修改Edge Commons Spotlight功能,使之能支持播放中国网站视频 版权声明: 本文版权属于 北京联友天下科技发展有限公司. 转载的时候请注明版权 ...

  4. 安装.Net framework 3.5 sp1报错的解决方法

    错误日志,提示: [11/22/07,18:04:40] Microsoft .NET Framework 2.0a: [2] Error: Installation failed for compo ...

  5. MicrosoftActiveSync 安装

    如何将自己的程序放到开发板中呢,一般都有三种方法:U盘.SD卡.USB同步,前两者其实差不多,很方便快捷,而笔者在进行USB同步的时候,还是发现了一些问题,下面我来介绍一下USB同步方法的相关知识. ...

  6. JavaScript基础笔记一

    一.真假判断 真的:true.非零数字.非空字符串.非空对象 假的:false.数字零.空字符串.空对象.undefined 例: if(0){ alert(1) }else{ alert(2) } ...

  7. Lombok(1.14.8) - @NoArgsConstructor, @RequiredArgsConstructor & @AllArgsConstructor

    @NoArgsConstructor @NoArgsConstructor,提供一个无参的构造方法. package com.huey.hello.bean; import java.util.Dat ...

  8. Redis - 排序

    SORT 命令格式 SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALP ...

  9. 参数请求post, get , delete中的基本使用(1)

    /// <summary> /// get 数据的时候可以采用此函数大部分功能 /// </summary> /// <param name="args&quo ...

  10. .net System.Net.Mail 之用SmtpClient发送邮件 Demo

    private static bool sendMail() { try { //接收人邮箱 string SendTo = "XXXXX@163.com"; //抄送人邮箱 st ...