[英]How to use chomp
下面是我要處理的數據列表。 我想拆分列,然后以不同的方式重新加入它們。
我想將數組的最后一個元素切換為第三個元素,但是遇到了問題。 由於數組的最后一個元素的末尾包含一個換行符,因此當我將其切換為thrid時,它會將所有內容都踢倒了一行。
碼
while (<>) {
my @flds = split /,/;
DO STUFF HERE;
ETC;
print join ",", @flds[ 0, 1, 3, 2 ]; # switches 3rd element with last
}
樣本數據
1,josh,Hello,Company_name
1,josh,Hello,Company_name
1,josh,Hello,Company_name
1,josh,Hello,Company_name
1,josh,Hello,Company_name
1,josh,Hello,Company_name
我的結果 -停了下來。
1,josh,Company_name
,Hello1,josh,Company_name
,Hello1,josh,Company_name
,Hello1,josh,Company_name
,Hello1,josh,Company_name
,Hello1,josh,Company_name,Hello
*所需結果**
1,josh,Company_name,Hello
1,josh,Company_name,Hello
1,josh,Company_name,Hello
1,josh,Company_name,Hello
1,josh,Company_name,Hello
1,josh,Company_name,Hello
我知道它與chomp有關,但是當我砍掉第一個或最后一個元素時,所有\\ n都將被刪除。 當我在兩者之間使用chomp時,什么也沒發生。 有人可以幫忙嗎?
chomp
從參數中刪除結尾的換行符。 因為沒有你的四個字段實際上應該包含一個換行符,這可能是你想要的數據處理的目的,做一些事情。 您甚至可以在將行拆分為字段之前用chomp
刪除換行符,然后在每條記錄后添加最后一個換行符,以添加最終換行語句:
while (<>) {
chomp; # Automatically operates on $_
my @flds = split /,/;
DO STUFF HERE;
ETC;
print join(",", @flds[0,1,3,2]) . "\n"; # switches 3rd element with last
}
while ( <> ) {
chomp;
my @flds = split /,/;
... rest of your stuff
}
在while
循環中,在處理每一行時,將$_
設置為該行的內容。 默認情況下chomp
,作用於$_
並刪除尾隨換行符。 split
也默認使用$_
,所以效果很好。
從技術上講,將要發生的是@flds
的最后一個元素包括行尾的\\n
,例如$flds[3]
。
chomp()函數將(通常)從字符串末尾刪除任何換行符。 我們通常說的原因是,它實際上會刪除與$ /(輸入記錄分隔符)的當前值匹配的任何字符,並且$ /默認為換行符。
示例1.截斷字符串從文件或用戶讀取數據時,通常會使用chomp()。 例如,當從標准輸入流(STDIN)讀取用戶輸入時,每行數據都會獲得一個換行符。 chomp()在這種情況下非常有用,因為您無需編寫正則表達式,也無需擔心會刪除所需的字符。
while (my $text = <STDIN>) {
chomp($text);
print "You entered '$text'\n";
last if ($text eq '');
}
該程序的示例用法和輸出是:
一個詞,您輸入了“一個詞”,一些文本,您輸入了“一些文本,”
你登錄了 ''
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.