Оператор ромба Perl выполняет итерации по неволшебным массивам (не @ARGV)?

Я нашел Слова Aspose быть лучшим как не, все могут открыть Office Open XML / *.docx файлы формата и Word interop, и автоматизация Word может быть багги. Слова Aspose поддерживают большинство типов файла документа из Word 97 вверх.

Это - плата - для компонента, но имеет большую поддержку. Другая альтернатива, как уже предложено является RTF.

5
задан brian d foy 1 November 2009 в 15:15
поделиться

3 ответа

Магия в действии!

Из ' perldoc perlop ':

Если то, что находится в угловых скобках, не является ни дескриптором файла, ни простой скалярной переменной содержащий имя дескриптора файла, typeglob или ссылку typeglob, это интерпретируется как имя файла шаблон для подстановки и либо список имен файлов, либо следующий имя файла в списке возвращается, в зависимости от контекста.

Это правило, которое вы запускаете с помощью этого кода. Вот что происходит:

  1. <@ a> (синтаксически, во время компиляции) определяется как glob раскрытие
  2. , поэтому <> превращает @a в строку «1222 2 3» ( строковая интерполяция массива)
  3. glob ("1222 2 3") в контексте списка возвращает ('1222', '2', '3')
11
ответ дан 13 December 2019 в 19:30
поделиться

Это вызывает глобус .

1
ответ дан 13 December 2019 в 19:30
поделиться

- это не имя дескриптора файла, а оператор угла, который выполняет операцию ввода строки на дескрипторе. Эта путаница обычно проявляется, когда люди пытаются напечатать оператор угла »- Программирование на Perl

Итак, в вашем случае массив представляет собой дескриптор, что имеет смысл, и поэтому оператор выполняет итерацию по нему. Итак, в ответ на на ваш вопрос, да, я думаю, что это стандартный (но неясный) Perl. Он неясен, потому что в языке есть более очевидные способы итерации по массиву.

-1
ответ дан 13 December 2019 в 19:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: