В чем разница между «0.0.0.0/1» и «по умолчанию»?

$ perl -e 'my @F=split //, shift;
           for my $i (0..@F) { print $F[$i] x $F[++$i]};
           print "\n"' A2B3C4
AABBBCCCC

Это разделяет ввод таким образом, что каждый отдельный символ становится элементом массива(@F). Затем, используя оператор умножения строк Perl (x), он печатает каждый элемент с четным -номером (, начиная с 0 ), число раз, равное следующему элементу с нечетным -номером.

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

$ echo $'A2B3C4\nE5F2G7' | perl -ne 'my @F=split //;
    for my $i (0..@F) { print $F[$i] x $F[++$i]};
    print "\n"' 
AABBBCCCC
EEEEEFFGGGGGGG

У обеих этих реализаций есть недостаток, заключающийся в том, что они допускают только строки из одной -цифры и подсчеты из одной -цифры.

Следующее снимает это ограничение:

$ echo A12B3CZ4 | perl -ne '
    # insert a space between numbers and alphabetic characters.
    s/([[:alpha:]])(\d)/$1 $2/g;
    s/(\d)([[:alpha:]])/$1 $2/g;
    # split on spaces
    @F = split / /;

    for my $i (0..@F) { print $F[$i] x $F[++$i]};
    print "\n"'
AAAAAAAAAAAABBBCZCZCZCZ
1
23.09.2021, 09:37
0 ответов

Теги

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