chop chop VARIABLE chop LIST chop
这个函数把一个字串变量的最后一个字符砍掉,并且返回砍掉的字符。chop 主要用于从一条输入记录的尾部删除换行符,并且比使用一个子过程更高效。如果这就是你在做的事情,那么用 chomp 更安全一些,因为 chop 不管字串里的是什么都会剪短它,而 chomp 则更有选择性一些。
你不能 chop 文本常量,只能 chop 一个变量。
如果你 chop 一列 LIST 变量,那么列表中的每个字串都被剪短:
@lines = `cat myfile`; chop @lines;
你可以 chop 任何是左值的东西,包括一个赋值:
chop($cwd = `pwd`); chop($answer = );
上面的和下面这句是不同的:
$answer = chop($tmp = ); # 错误
它把一个新行放到了 $answer 里,因为 dhop 返回砍掉的字符,而不是剩下的字串(在 $tmp 里)。获取我们这里想要的结果的一个方法是用 substr:
$answer = substr , 0, -1;
不过我们更经常的是写:
chop($answer = );
在最常见的情况下,chop 可以用 substr 来表示:
$last_char = chop($var); $last_char = substr($var, -1, 1, "" ); # 一样的东西
一旦你理解了这个等效原理,你就可以用它做更大的砍削。要砍掉多于一个字符,那么把 substr 当作左值使用,赋予一个空字串。下面的代码删除 $caravan 的最后五个字符:
substr($caravan, -5) = " ";
这里的负数脚标令 substr 从字串的尾部而不是头部开始计算。如果你想保存这样删除的字符,你可以使用四个参数形式的 substr,创建一个五倍的砍削:
$tail = substr($caravan, -5, 5, "");