2012-10-19 82 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"; 

我想是这样..........