Now, sidestepping the question why you're rolling your own parsing, why match anything alphabetic (more than 100,000 characters will match) or a digit (more than 400 matches). And considering that [\p{IsAlphabetic}\d] is equivalent to \p{Alnum}, you could have saved a lot of typing. Of course, it's still wrong. Much better would be the pattern: %(\p{AHex}{2}), as \p{AHex} matches exactly the 22 characters you want to match. Not a single character more, not a single character less. Much better than the 100,520 characters you're matching.$value =~ s/%([\p{IsAlphabetic}\d][\p{IsAlphabetic}\d])/pack("C", hex($1)) +/egxsm;
And what's up with the modifiers? You have 5, of which you're only using 2. You've no characters in your pattern that will change meaning with the /s, /m and /x modifiers.
In reply to Re: This runs WAY too slow
by JavaFan
in thread This runs WAY too slow
by Dandello
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |