Каковы сравнительные преимущества glob ('foo *') перед <foo *>? - PullRequest
15 голосов
/ 18 января 2010

Я просто смотрю на Может кто-нибудь сказать мне, как создать массив содержимого каталога? . Неудивительно, что файловые глобусы были предложены в качестве ответа. Что меня удивило, так это то, что пост рекомендовал использовать glob() вместо <*>.

Я использую <*>, потому что это то, что я узнал давным-давно и никогда не думал об этом. Что не является веской причиной.

Какой синтаксис вы предпочитаете для глобализации и почему?

Ответы [ 3 ]

12 голосов
/ 18 января 2010

Лично я думаю, что <> сильно перегружен. Это как бы означает «читать из итератора», но в определении того, какой тип итератора на мой вкус, слишком много магии и тонкости. например <$foo> и <$foo{bar}> означают совершенно разные вещи, а волшебный голый <> означает еще что-то другое.

Я предпочитаю использовать glob и резервировать синтаксис <> для дескрипторов. Это избавляет от когнитивного бремени выяснения, является ли содержимое <> шаблоном, а не дескриптором (или чем-то, что разрешает один). Тем не менее, если вы мысленно связываете нотацию <> с «итератором» вместо «чтения», вы можете предпочесть это функциональному синтаксису - по крайней мере, в тех случаях, когда вы хотите перешагнуть через результаты, а не создать список.

10 голосов
/ 18 января 2010

Пердок, с которым вы связались, говорит о некоторых проблемах с синтаксисом угловой скобки:

Один уровень двойной кавычки интерпретация делается в первую очередь, но вы не могу сказать <$foo>, потому что это косвенный файловый дескриптор, как описано в предыдущий абзац. (В старшем версии Perl, программисты вставить фигурные скобки, чтобы заставить интерпретация как имя файла glob: <${foo}>. В наши дни считается очиститель для вызова внутренней функции прямо как glob($foo), что вероятно, правильный способ сделать это во-первых. )

Я в основном использую File::Find и ему подобные.

2 голосов
/ 19 января 2010

В наши дни я придерживаюсь glob, потому что считаю его более читабельным и удобным для новичков (*) по сравнению с использованием угловых скобок.

(*) perldoc -f glob работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...