perl中的字符串操作函数chomp与chop介绍

所属分类: 脚本专栏 / perl 阅读数: 1466
收藏 0 赞 0 分享

chompchop都是用于去除字符串变量尾部的字符,但它们有各自的区别。

chomp函数对变量起作用,而此变量含有字符串。如果字符串结尾有换行符,chomp可以去掉它。这基本上就是它能完成的所有功能,如下例:

复制代码 代码如下:

$text="alineoftext\n      "; #也可以由<STDIN>输入
chomp($text);    #去掉换行符(\n)。

它非常有用,基本上你的每一个程序都会用到它。如你将知道,这是将字符串末尾换行符去掉的最好方法。基于 Perl 中的一条基本原则:在需要使用变量的地方,可以使用赋值表达式来代替。我们有更简单的使用 chomp 的方法。Perl 首先做赋值运算,再使用这个变量。因此使用 chomp 的最常用方法是:
复制代码 代码如下:

chomp($text=<STDIN>);    #读入,但不含换行符
$text=<STDIN>;
chomp($text);

#同上,但用两步完成


第一眼见到时,第一种组合的方法看起来复杂些。如果把上述其看成两步操作,读一行再  chomp,那写成两个语句的方法看起来自然些。如果将其看作一个操作,读入一行但不包括换行符,那写成一个语句的方法更恰当。由于绝大多数 Perl 程序员使用第一种写法,你也应该使用它。

chomp 是一个函数。作为一个函数,它有一个返回值,为移除的字符的个数。这个数字基本上没什么用:

复制代码 代码如下:

$food=<STDIN>;
$betty=chomp($food); #得到值 1

如上,在使用 chomp 时,可以使用或不使用括号()。这又是 Perl 中的一条通用规则:除非移除它们时含义会变,否则括号是可以省略的。如果结尾有两个或两个以上的换行符,chomp 仅去掉一个。如果没有,那什么也不做,返回 0。这种情况在一次读入一行时不会发生,但使用了输入分隔符(input  separator)($/)(其不为换行符(\n)),read 函数,或者将一些字符串结合起来就有可能发生。

在编写Perl程序代码的时候,也许你会有时会用chop() 函数来去掉<>输入的换行符"\n",有时候使用chomp() 函数。其实上面的用法都可以达到预期的效果,但它们也有细微的差别。
 
chop()函数,只是去除最后一个字符。
chomp()函数,就要首先判断最后一个字符是不是为"\n",它才去除。

chop函数会砍掉字符串变量的最后一个字符,并返回砍掉的字符,chop函数不管字符串里是什么都会剪短它,而chomp函数则更有选择性一些。不能chop直接量,只能chop变量。
用法:

复制代码 代码如下:

chop VARIABLE
chop LIST
chop

例子:
如果chop一列LIST变量,那么列表中的每个字符串都会被剪短:
复制代码 代码如下:

@lines=`cat myfile`;
chop @lines;

在最常见的情况下,chop可以用substr来表示:
复制代码 代码如下:

$last_char = chop($var);
$last_char = substr($var, -1, 1, ""); # 同上

再来看下面的完整的例子:
复制代码 代码如下:

#!/usr/bin/perl
$string1 = "This is test";
$retval  = chop( $string1 );
print " Choped String is : $string1\n";
print " Character removed : $retval\n";

结果:
复制代码 代码如下:

Choped String is : This is tes
Number of characters removed : t

更多精彩内容其他人还在看

使用 use re debug 查看正则表达式的匹配过程

使用 use re 'debug' 查看正则表达式的匹配过程,参见如下的代码
收藏 0 赞 0 分享

perl中的$a和$b介绍

有关perl中的$a和$b,这两个变量是为sort函数准备的内置变量,所以声明时可以不加 my
收藏 0 赞 0 分享

perl用{}修饰变量名的写法分享

在perl中用{}修饰变量名,可以防止 _ 被解释为变量名的一部分
收藏 0 赞 0 分享

Perl使用File::Basename获取文件扩展名的代码

本文为大家介绍的这个例子,实现了获取/home/topgkw中所有文件后缀,其中目录返回空值
收藏 0 赞 0 分享

Perl 哈希Hash用法之入门教程

本文和大家重点讨论一下Perl Hash的用法,哈希是一种数据结构,和数组类似,但是,和数组不同的是,其索引不是数字,而是名字。也就是说,索引(这里,我们将它叫key)不是数字而是任意的唯一的字符串
收藏 0 赞 0 分享

perl哈希的一个实例分析

上一篇文章介绍了hash的入门教程,这篇文章为大家提供一个实例,方便大家深入学习
收藏 0 赞 0 分享

Perl哈希表用法解析

Perl语言有很多值得学习的地方,那么你对Perl哈希表的概念是否熟悉呢,这里和大家分享一下,希望本文的介绍能让你有所收获
收藏 0 赞 0 分享

Perl 哈希的创建和引用介绍

创建,引用仅有两种方法,使用它也是两种,这里简单介绍下, 方便需要的朋友
收藏 0 赞 0 分享

Perl 函数集小结

perl中常用的函数集合,特分享下,方便需要的朋友
收藏 0 赞 0 分享

perl的POD权限问题处理

今天我们继续查找mod_perl对req_header的处理,有需要的朋友建议参考学习之
收藏 0 赞 0 分享
查看更多