The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Perl и символ $, !*! Перспективный, 12-Сен-17, 18:57  [смотреть все]
Привет, у меня не получается замена с символом $ на perl 5.26.0

вот так я делаю на sed
echo "aa bb$ cc"|sed -E 's|\S+\$|XXX|g'
aa XXX cc

а вот на perl
perl -E 'my $p="aa bb$ cc"; $p =~ s/\S+\$/XXX/g;  say "$p"'
aa bb

варианты с \Q \E не работают тоже. Как тут правильно делается?

  • Perl и символ $, !*! ыы, 23:45 , 12-Сен-17 (1)
    > Привет, у меня не получается замена с символом $ на perl 5.26.0
    > вот так я делаю на sed
    > echo "aa bb$ cc"|sed -E 's|\S+\$|XXX|g'
    > aa XXX cc
    > а вот на perl
    > perl -E 'my $p="aa bb$ cc"; $p =~ s/\S+\$/XXX/g;  say "$p"'
    > aa bb
    > варианты с \Q \E не работают тоже. Как тут правильно делается?

    Правильно очевидно - не использовать двойные кавычки там где вы не хотите чтобы $ воспринимался как служебный символ.
    Либо надо так "aa bb\$ cc" либо так 'aa bb$ cc'

    • Perl и символ $, !*! Перспективный, 05:41 , 13-Сен-17 (2)
      > Либо надо так "aa bb\$ cc"

      Спасибо так работает, но я получаю данные без экранирования, и меня конечно интересует вариант
      > либо так 'aa bb$ cc'

      но не работает
      perl -E 'my $p='aa bb$ cc'; $p =~ s/S+\$/XXX/g;  say "$p"'
      <ничего>


      • Perl и символ $, !*! ЫЫ, 10:52 , 13-Сен-17 (3)
        >> Либо надо так "aa bb\$ cc"
        > Спасибо так работает, но я получаю данные без экранирования, и меня конечно
        > интересует вариант
        >> либо так 'aa bb$ cc'
        > но не работает
        > perl -E 'my $p='aa bb$ cc'; $p =~ s/S+\$/XXX/g;  say "$p"'
        > <ничего>

        потому что однострочник с неэкранированным  спецсимволом ("одинарная кавычка").

        • Perl и символ $, !*! ЫЫ, 10:59 , 13-Сен-17 (4)
          >>> Либо надо так "aa bb\$ cc"
          >> Спасибо так работает, но я получаю данные без экранирования, и меня конечно
          >> интересует вариант
          >>> либо так 'aa bb$ cc'
          >> но не работает
          >> perl -E 'my $p='aa bb$ cc'; $p =~ s/S+\$/XXX/g;  say "$p"'
          >> <ничего>
          > потому что однострочник с неэкранированным  спецсимволом ("одинарная кавычка").

          для линукса (под виндой не сработает, экранироваь надо по другому):
          perl -e "\$p='aa bb$ cc'; \$p=~s/\S+\\$/XXX/g;  print \$p;"

          • Perl и символ $, !*! XAnder, 12:25 , 13-Сен-17 (5)
            > для линукса (под виндой не сработает, экранироваь надо по другому):
            > perl -e "\$p='aa bb$ cc'; \$p=~s/\S+\\$/XXX/g;  print \$p;"

            Можно проще:

            perl -E 'my $p=q{aa bb$ cc}; $p =~ s/\S+\$/XXX/g; say $p'

            • Perl и символ $, !*! ЫЫ, 13:55 , 13-Сен-17 (6)
              >> для линукса (под виндой не сработает, экранироваь надо по другому):
              >> perl -e "\$p='aa bb$ cc'; \$p=~s/\S+\\$/XXX/g;  print \$p;"
              > Можно проще:
              >
              perl -E 'my $p=q{aa bb$ cc}; $p =~ s/\S+\$/XXX/g; say $p'

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




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру