用"连接"连接Perl中的字符串

Dav*_* W. 8 perl

请参阅下面的更新

我正在阅读一大堆Perl脚本,我公司的某个人写过这些脚本.他曾经join用来连接字符串.例如,他这样做(从真正的Perl脚本中取出):

$fullpath=join "", $Upload_Loc, "/", "$filename";
Run Code Online (Sandbox Code Playgroud)

而不是这个:

$fullpath = "$Upload_Loc" . "/" . "$filename";
Run Code Online (Sandbox Code Playgroud)

或者就是这样:

$fullpath = "$Upload_Loc/$filename";
Run Code Online (Sandbox Code Playgroud)

他不在了,但是在这里的人告诉我他以这种方式连接字符串,因为它在某种程度上更好.(他们不太清楚为什么).

那么,为什么有人会join在这个问题上使用.连接运算符,或者只是像第三个例子那样键入字符串?这种编码风格是否有正当理由?

我想在这里清理很多乱七八糟的东西,我的第一个想法是结束这种做法.它使代码更难阅读,我确信做一个join不是一种连接字符串的非常有效的方法.然而,虽然自从3.x版以来我一直在用Perl编写脚本,但我并不认为自己是一个大师,因为我从来没有机会和Perl比Perl更好的人和我教我Perl深刻的内心秘密.在我愚弄自己之前,我只是想确保我的直觉在这里是正确的.

我有更好的办法在这里做到这一点.


更新

人们变得困惑.他不只是为了连接路径.这是另一个例子:

$hotfix=join "", "$app", "_", "$mod", "_", "$bld", "_", "$hf", ".zip";
Run Code Online (Sandbox Code Playgroud)

我会在哪里做这样的事情:

$hotfix = $app . "_"  $mod . "_" . $bld . "_" . "$hf.zip";
Run Code Online (Sandbox Code Playgroud)

或者,更有可能

$hotfix = "${app}_${mod}_${bld}_${hf}.zip";
Run Code Online (Sandbox Code Playgroud)

或者在这种情况下,我可能实际使用,join因为下划线会导致问题:

$hotfix = join("_", $app, $mod, $bld, $hf) . ".zip";
Run Code Online (Sandbox Code Playgroud)

我的问题仍然是:他是否正在做一些真正的Perl黑客知道的事情,而像我一样只做了15年的新手却不知道?人们看着我使用串联字符串.或者只是将它们放在引号中并说"哈!真是个菜鸟!我敢打赌他也拥有一台Macintosh!"

或者,以前的家伙是否只有一种独特的编程风格,就像我儿子独特的驾驶风格包括跑到树上一样?

Sim*_*ker 6

我为"一个知名的在线零售商"做了我公平的商业Perl开发,我从来没有见过这样的join用途.您的第三个示例将是我的首选替代方案,因为它简单,干净且易读.

和其他人一样,我认为使用join性能增强器没有任何真正的价值.它可能比字符串插值更好地执行,但我无法想象一个真实的情况,其中优化可能是合理的,但代码仍然用脚本语言编写.

正如这个问题所表明的那样,深奥的编程习语(用任何语言)只会导致很多误解.如果你很幸运,这种误解是良性的.我喜欢和他们一起工作的开发人员是编写可读性和一致性的代码,并在周末离开Perl Golf.:)

简而言之:是的,我认为他独特的风格类似于你儿子独特的驾驶风格.:)