in reply to text has single and double quotes and anychar. how to assign this text?

Hello rsFalse,

does the q{} help?

Yes, provided you can find a delimiter which you know isn’t in the string:

use strict; use warnings; my $s1 = q!/\Q"'[]{}()/!; print "$s1\n";

Output:

23:39 >perl 1351_SoPW.pl /\Q"'[]{}()/ 23:46 >
If I have a variable somewhere inside a string, which I want to interpolate?

You can interpolate with qq{}, but that is problematic: something like \Q is treated, not as 2 separate characters, but as a single escape sequence. In this situation, use concatenation in preference to interpolation:

use strict; use warnings; my $str = 'smth'; my $var = q!/\Q"'[]{}()/ or ! . $str; print "$var\n";

Output:

23:52 >perl 1351_SoPW.pl /\Q"'[]{}()/ or smth 23:52 >

Hope that helps,

Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

Replies are listed 'Best First'.
Re^2: text has single and double quotes and anychar. how to assign this text?
by rsFalse (Chaplain) on Aug 20, 2015 at 15:15 UTC
    Thank you, Athanasius.
    In my case I read line, which has words and some other chars.
    # ... $input = <>; # string which can contain any chars $input =~ s/\b(?=\w)/\$/g; # words prepend with dollar sign print $some_file <<"END"; my \$var = "$input"; END
    I want $some_file to become syntactically correct. I don't know in which place will be variables and which characters will the line contain. And one more problem: if input is "aaa{a}", I prepend "$" sign before 'aaa' and before 'a', I want to have two variables '$aaa' and '$a', but here I will have an interpolation of hash value :/.
    (updated)

      Hello rsFalse,

      I want $some_file to become syntactically correct.

      Do you mean you want to turn a text file into syntactically correct Perl? If so, this sounds like a recipe for disaster. Are you going to eval "$some_file"; after prepending a $ sigil to each word? If the file comes from an untrustworthy source, it could destroy your system. And if from a trusted source, why the need to re-write it? And how do you know in advance that a variable should be prepended with a $, and not an @ or a %?

      This is beginning to look like an XY Problem. Might be a better idea to explain what you’re trying to achieve. It’s likely the monks will be able to steer you towards a better strategy.

      Hope that helps,

      Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,