perl——当split函数用空格做分隔符时

split语法perl——当split函数用空格做分隔符时 ## 语法 split /PATTERN/,EXPR split /PATTERN/ split  split用来分隔字符串EXPR,在列表上下文中返回分隔后的列表,在标量上下文中返回列表长度。  split用空格分隔字符串...

split语法


## 语法

split /PATTERN/,EXPR 
split /PATTERN/ 
split 


split用来分隔字符串EXPR,在列表上下文中返回分隔后的列表,在标量上下文中返回列表长度。 


split用空格分隔字符串:

#!/usr/bin/perl
$_= "   a   b   c   d   e";    ## 字符串有前导空格,字符‘a’前面有空白
print join " | ", split ;       ## 默认分隔符
print "\n";
print join " ! ", split /\s+/;  ## 正则匹配空格
print "\n";
print join " | ", split ' ';    ## 直接量空格
print "\n";
##### 输出结果
##  a | b | c | d | e
##   ! a ! b ! c ! d ! e
##  a | b | c | d | e


默认分隔符split和直接量分隔符split ' '都把字符串的前导空格去掉了,而正则匹配split /\s+/为前导空格保留了位置,用一个空字符''代替。

以前认为split /\s+/和split ' '是一样的,现在看来是不一样的。

为什么会这样呢!


用-代替空格:

#!/usr/bin/perl
$_= "---a--b----c-d-e";
print join " ! ", split /-+/;
print "\n";
####输出结果
#  ! a ! b ! c ! d ! e


可以理解为perl字符串是由一个空字符''开头,这样就可以理解上一节中,split /\s+/分隔后的结果。


而split ' '是split的特殊情况,该格式是模拟awk的默认行为,所以在分割行为开始之前,会把字符串中的前导空格全部删除,然后再使用split /\s+/处理,这就是为什么两者结果不同的原因。


除了split ' '这种特殊情况外,如果提供其他字符串,perl也会解释为正则表达式去执行。

--------------------- 


原文:https://blog.csdn.net/Aggressive_snail/article/details/64905470 



此外,我们在网易云课堂上有各种教学视频,有兴趣可以了解一下:

1. 文章越来越难发?是你没发现新思路,基因家族分析发2-4分文章简单快速,学习链接:基因家族分析实操课程

2. 转录组数据理解不深入?图表看不懂?点击链接学习深入解读数据结果文件,学习链接:转录组(有参)结果解读转录组(无参)结果解读

3. 转录组数据深入挖掘技能-WGCNA,提升你的文章档次,学习链接:WGCNA-加权基因共表达网络分析

4. 转录组数据怎么挖掘?学习链接:转录组标准分析后的数据挖掘

5. 微生物16S/ITS/18S分析原理及结果解读

6. 更多学习内容:linux、perl、R语言画图,更多免费课程请点击以下链接:

https://study.omicsclass.com/


  • 发表于 2019-05-17 15:21
  • 阅读 ( 4999 )
  • 分类:perl

0 条评论

请先 登录 后评论
安生水
安生水

351 篇文章

作家榜 »

  1. omicsgene 702 文章
  2. 安生水 351 文章
  3. Daitoue 167 文章
  4. 生物女学霸 120 文章
  5. xun 82 文章
  6. rzx 78 文章
  7. 红橙子 78 文章
  8. CORNERSTONE 72 文章