I'm not sure if you have a 'cut and paste' issue, but the code you supply has syntax errors. The hash declaration for %findReplaceH is not terminated with a ), and you have a q[ missing on one line. I get:
"my" variable $folderPath masks earlier declaration in same scope at C
+:\gash.pl
line 17.
"my" variable $folderPath masks earlier declaration in same scope at C
+:\gash.pl
line 19.
Unmatched right square bracket at C:\gash.pl line 14, at end of line
syntax error at C:\gash.pl line 14, near "<TList.Item>]"
syntax error at C:\gash.pl line 68, near "print"
Execution of C:\gash.pl aborted due to compilation errors.
I added
use warnings;
Update 2
Fixing these issues, I then found that neither subroutine is actually called, I guess you are missing a File::Find.
Anyway, so I extracted the RE and and tried a simple test. This time I assumed that the data had embedded spaces, so I altered the RE:
my %findReplaceH = (
q[<TList.Bullet>\\s*] =>q[<ul>],
q[\\s*</TList.Bullet>]=>q[</ul>],
q[<TList.Item>\\s*] =>q[<li>],
q[\\s*</TList.Item>]=>q[</li>],
);
my $useRegexQ = 1;
my $wholeFileString='<TList.Bullet><TList.Item> sometext </TList.Item>
+</TList.Bullet>';
my $replaceCount = 0;
foreach my $key1 (keys %findReplaceH) {
my $pattern = ($useRegexQ ? $key1 : quotemeta($key1));
$replaceCount = $replaceCount + ($wholeFileString =~
s/$pattern/$findReplaceH{$key1}/g);
};
print "$wholeFileString\n";
and it appears to work correctly without extra spaces:
<ul><li>sometext</li></ul>
Note that I set
$useRegexQ to force
quotemeta
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.