I do not understand your overall question.
However, some specific comments on the OPed regexes:
-
Inside and at the very beginning of a character class, the ^ regex metacharacter produces class "inversion", i.e., the class matches any character not in the class. So [^$find1] is the same as [^%] and matches any character that is not a '%' character.
-
Outside a character class, the ^ metacharacter asserts the beginning of the string (if the /m regex modifier is not used). So [^$find1]?^ is the same as [^%]?^ and matches zero or one of any character that is not a '%' and that is before the beginning of the string. Effectively, it matches the beginning of the string and a '^' character is always inserted at the beginning of the string by the substitution.
-
The expression [$find1]?$ matches zero or one '%' characters at the end of the string (or before a newline at the end of the string). Effectively, a '+' character is always inserted at the end of the string by the substitution.
Update:
c:\@Work\Perl\monks>perl -wMstrict -le
"my $field2_b = 'abcd';
;;
my $find1 = '%';
if ($field2_b ne '') { s/[^$find1]?^/\^/, s/[$find1]?$/+/ for $field2
+_b };
print qq{'$field2_b'};
"
'^abcd+'
Please see
perlre,
perlrecharclass,
perlrequick, and especially
perlretut.
Give a man a fish: <%-(-(-(-<
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.