2014-04-28 36 views
0

插入變量我有這個Perl子跳過額外的線,而在Perl

sub request 
{ 
#INPUTS 
.... 
.... 
my $users_info = @_[5] ; 
my $req_exp = <<DOC; 
#SN# Step $number 
#DN# AUTHENT $type_authent + PFS SERVICE 
#ED# $reponse 
GET /$jonction/testussowt/printenv HTTP/1.1 
Host : $HOST 
$users_info 
--- 
DOC 
return $req_exp ; 
} 

如果我這樣稱呼它

my $test = &request(other_arguments..,'user1'); 
print $test ; 

我得到正確的輸出(我只顯示最後兩行此事)

user1 
--- 

但是,如果我這樣稱呼它

my $var = &other_sub_that_returns_a_string; 
my $test = &request(other_arguments..,$var); 
print $test; 

我在輸出

user1 

--- 
+1

您確定'other_sub_that_returns_a_string'刪除了字符串末尾的換行符嗎?如果在你使用該子類的情況下,你應用'chomp $ var;',你會得到相同的行爲嗎? – AntonH

+0

通過添加'chomp $ var;'問題是固定的,但問題是什麼?'other_sub_that_returns_a_string'只返回一個值,並且沒有'\ n'或類似的東西! – Hobbit1919

+0

這不可能是正確的。 'chomp' ** only **在字符串末尾刪除換行符,所以函數必須添加一個或保留一個。 – AntonH

回答

0

得到這個額外的空行,如果沒有完整的代碼,很難說究竟這裏發生了什麼。

最好的猜測是你的子程序在結束時返回一個換行符,或者從別的地方拉出換行符。

爲了解決這個問題:

my $var = &other_sub_that_returns_a_string; 
chomp($var); 
my $test = &request(other_arguments..,$var); 
print $test; 

如果您發佈您的代碼,我可以肯定地看一看,並盡力幫助你找出其中的換行符的來源。