Perl Glob Range Перестановки - PullRequest
       8

Perl Glob Range Перестановки

1 голос
/ 24 декабря 2010

Необходимо использовать Perl для создания перестановок

Нужно знать, позволяет ли glob создавать различные перестановки на основе диапазонов: числовые или строковые [1..9] или ['a' - 'z']

Примеры: perl -le' print для glob "{L, E, V} {1,2,3,4,5}" 'Я не хочу вводить вручную 1,2 ...5.Возможные значения от 1 до 100 для значений LEV

  1. L
  2. L
  3. L
  4. L
  5. L

спасибо

Ответы [ 3 ]

2 голосов
/ 24 декабря 2010

Нет, glob этого не делает, если не существует файлов со всеми этими именами. Только явно перечисленные части имени файла возвращаются glob независимо от того, существует файл или нет.

Но вы можете использовать Perl для составления списка для вас:

@list = glob '{L,E,V}{' . join(',', 1..100) . '}';

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

Вот один из них:

@list = map {
    my $lev = $_;
    map $lev . $_, 1..100;
} qw/L E V/;
0 голосов
/ 24 декабря 2010

С perldoc -f glob :

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

  1. @ many = glob "{яблоко, помидор, вишня} = {зеленый, желтый, красный}";

Как видите, эта функция работает только с метанотацией {}.

0 голосов
/ 24 декабря 2010

Я не совсем понимаю ваш вопрос, но если вы хотите сделать перестановки, см. Perl FAQ .

...