2012-10-19 148 views
-2

我在串聯字符串時遇到了一些麻煩。我打算創建一個將成爲.txt文件的路徑,但它總是以「.txt」的名字命名。儘管如此,它最終還是在右翼。將字符串連接到路徑

這是我在做什麼:

open TEXT, ">/home/admin/www/build/logs/baseline".$ID."/".$platformName.".txt" or die $!; 

所以我要創建的文件。 「/home/admin/www/build/logs/baseline45/linux.txt」

我在哪裏搞砸了?

謝謝!

+0

'$ ID = 45; $ platformName =「linux」;打印「>/home/admin/www/build/logs/baseline」。 $ ID。 「/」。 $ platformName。 「.txt」,「\ n」;'打印'>/home/admin/www/build/logs/baseline45/linux.txt。所以「我在哪裏搞砸了?」是「別的地方」。 – DavidO

+2

你應該打開三個參數,即'打開我的$ fh,'>','/home/admin/www/build/logs/baseline45/linux.txt'或者死掉$ !;'。 – squiguy

+0

關於三參數開放,詞法文件句柄,括號的建議可以在視覺上消除運算符優先級(對Perl不是不明確的),並且使用插值而不是串聯都與實際問題正交。不幸的是,除非我們獲得更多信息,否則這個問題是無法回答的,因爲所提供的代碼在技術上並不正確。 – DavidO

回答

2

你沒有搞亂所提供的代碼片段,有幾種方法可以形成一個包含變量值的字符串,並且你正在使用其中的一個(點運算符)。

嘗試檢查,以便$platformType確實包含您的想法,除非您還沒有;打開警告(並優先嚴格模式)。

開啓警告/嚴格的模式可能會給你不確定變量的細節將在像這樣的情況有幫助的(即是$platformType真的是你正在尋找的變量的名字嗎?)

use warnings; 
use strict; 

在打開文件之前打印$platformType的值,你會發現它確實是一個空字符串(或者只是包含一些奇怪的東西來解釋你得到的結果)。

0

步驟1:

open TEXT, '>/home/admin/www/build/logs/baseline/' . $ID . '/' . $platformName . '.txt'; 

步驟2:

open TEXT, ">/home/admin/www/build/logs/baseline/" . $ID . "/" . $platformName . ".txt"; 

我想是這樣..........