См. Обновление ниже
Я прохожу целую кучу сценариев Perl, написанных кем-то из моей компании. Он использовал join
для объединения строк. Например, он делает это (взято из реального сценария Perl):
$fullpath=join "", $Upload_Loc, "/", "$filename";
Вместо этого:
$fullpath = "$Upload_Loc" . "/" . "$filename";
Или даже просто так:
$fullpath = "$Upload_Loc/$filename";
Его больше нет, но люди, которые здесь присутствуют, говорят мне, что он связал строки таким образом, потому что это было как-то лучше . (Они не слишком ясно, почему).
Итак, почему кто-то использует join
в этом вопросе, вместо использования оператора конкатенации .
, или просто набирает строки вместе, как в третьем примере? Есть ли веская причина для такого стиля кодирования?
Я пытаюсь навести порядок здесь, и моей первой мыслью было бы положить конец этой практике. Это затрудняет чтение кода, и я уверен, что join
не очень эффективный способ объединения строк. Однако, хотя я писал сценарии на Perl начиная с версии 3.x, я не считаю себя гуру, потому что у меня никогда не было возможности общаться с людьми, которые были лучше Perl, чем я, и могли бы научить меня Глубокие внутренние секреты Perl. Я просто хочу убедиться, что мой инстинкт здесь правильный, прежде чем я обманываю себя.
У меня есть лучшие способы сделать это здесь.
Обновление
Люди запутываются. Он не только для объединения путей. Вот еще один пример:
$hotfix=join "", "$app", "_", "$mod", "_", "$bld", "_", "$hf", ".zip";
Где, как я бы сделал что-то вроде этого:
$hotfix = $app . "_" $mod . "_" . $bld . "_" . "$hf.zip";
Или, более вероятно,
$hotfix = "${app}_${mod}_${bld}_${hf}.zip";
Или, может быть, в этом случае я мог бы использовать join
, потому что подчеркивание вызывает проблемы:
$hotfix = join("_", $app, $mod, $bld, $hf) . ".zip";
Мой вопрос до сих пор: делает ли он что-то, что знают настоящие хакеры Perl, и такой новичок, как я, который занимается этим всего 15 лет, не знает? Люди смотрят на меня, объединяя строки, используя .
, или просто помещают их в кавычки и говорят: «Ха! Какой нуб! Уверен, у него тоже есть Macintosh!»
Или у предыдущего парня просто есть уникальный стиль программирования, очень похожий на уникальный стиль вождения моего сына, который включает в себя бегущую голову по деревьям?