I asked a question earlier today regarding using Perl to search in a CSS document. I have since refined my requirements a little bit, and have a better idea of what I am trying to do.
The document I am searching through is actually an .html doc with CSS as a style in the <head>, if that makes sense.
Basically, what I need to do though is find all the CSS elements that have a color or background color attribute, and record them. Here’s my thought process.
- open the file and set it as an array
- read the array line-by-line until it comes to a “{“
- make everything into a scalar variable or array until I get to the “}”
- search the secondary variable or string for instances of “color” blah blah blah.
The issue I am having is finding a way to scour the document and turn everything between { and } into a variable of some sort. Any one have any ideas?
Cheers!
No matter what, I wouldn’t recommend writing your own code from the ground up for this. You should use a parser. A quick search on CPAN suggests this family of modules. On the other hand, if your css is in an html file rather than a separate css file (shame on you), then you might end up needing a different type of parser.
Either way, it’s generally not a good idea to try to hand-roll your own quasi-parser out of regular expressions. Use a proper parser, and leverage someone else’s work.
On a slightly different tack, if you only want to extract some of the information from a file of any kind, then in many cases you don’t want to put the whole file into an array first. (It can be memory intensive if the file is very large, and it’s unnecessary.) It’s easy to open the file and the process the items as you work through it line by line.