沒有使用chomp:
- #!/bin/perl
- print "Please input an string and a number by order!n";
- $the_string= <>;
- $the_numb= <>;
- print "The result is n";
- print "$the_string"x "$the_numb";
結果:
The result is
my
my
my
my
my
加入chomp的情況:
- #!/bin/perl
- print "Please input an string and a number by order!n";
- chomp ( $the_string= <> );
- chomp ( $the_numb= <> );
- print "The result is n";
- print "$the_string"x "$the_numb";
結果:
The result is
mymymymymy
如果字元串結尾有換行符,chomp 可以去掉它。這基本上就是它能完成的所有功能,如下例:
$text = “a line of text/n”; #也可以由輸入
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。
chop和chomp函數差別
chop函數負責删除标量型标量的最後一個字元或數組中每個元素的最後一個字元,并傳回修改後的值。chop一般用于删除程式接收到的輸入行末尾的換行符,這些輸入行可以來自STDIN、檔案或者指令置換結果。
chomp函數,負責删除标量型變量中的最後一個字元,或者數組中每個字的最後一個字元,并保證隻有該行末字元是換行符時才進行删除操作。它會傳回删除後的字元數目。使用chomp函數來代替chop,能避免删除換行符之外的其它字元。
例1:chop
- #!/usr/bin/perl
- $v = 'Flowers';
- $r = chop ( $v );
- print "$v (without $r)n";
運作結果
[[email protected] per]# ./1-16.pl
Flower (without s)
例2:chomp
- #!/usr/bin/perl
- print "User name: ";
- $name = < STDIN >;
- chomp $name;
- print "Your user name is : $namen";
運作結果
[[email protected] per]# ./1-18.pl
User name: Bill
Your user name is : Bill
本文轉載自:http://www.perlcn.com/perlbc/perljc/1655.html