Perl - 连接非空字符串

Perl - Concatenate non-empty strings

我需要一点帮助 "optimizing" 我的代码,因为我相信有更好、更简洁的方法来完成它。我有 6 个变量,它们是通过从更长的字符串中解析出来创建的:

Year
Make
Model
Color
ColorLower
Style

根据记录,我可能有部分或所有这些变量的详细信息。但在大多数情况下,有些是空白的。在填充变量之后,我将它们添加到一个数据库字段中,该字段是 car/vehicle.

的描述

目前我的 if/else 块一个接一个,如果变量的长度不为零,则连接的描述变量

if (length($Year)>0)
{
    $Description == $Description + " " + Year
}
elsif (length($Make) > 0)
    $Description == $Description + " " + $Make
}   ...and so on

TMTOWTDI 绝对适用于此,我总是惊叹于专家们提出的优雅的一行。尽管我现在所拥有的正在运行,但我很想知道是否有一种更短、更紧凑的方式可以最大化我的代码。

谢谢大家

也许是这样的:

$desc = join ' ', grep { length $_ > 0 }
  $Year, $Make, $Model, $Color, $ColorLower, $Style;

不需要长度测试。空字符串是 false,所以这将有效

$desc = join ' ', grep $_, $year, $make, $model, $color, $color_lower, $style;

还值得指出的是,大写字母是为 Perl 全局标识符(例如包名称)保留的。对于母语不是英语的人来说,混合大小写标识符也特别困难,Wikipedia has this to say

"At least one study found that readers can recognize snake case values more quickly than CamelCase"