http://www.perlmonks.org?node_id=339046


in reply to regex question

Thanks for the help all :) The solution I ended using was writing an adaptor mod for CSS::Adaptor.
package CSS::Adaptor::XML; $VERSION = 1.00; use CSS::Adaptor; @ISA = ('CSS::Adaptor'); use strict; use warnings; sub output_rule { my ($self, $rule) = @_; #loop on each selector foreach ($rule->selectors(@_)){ #grab the selector name my $selector = $rule->selectors; print "\t\<style name=\"".$selector."\"\>\n"; #loop on each selector's properties foreach ($rule->properties(@_)){ my @properties = $rule->properties; foreach my $line (@properties){ my %properties = split (/[:;]\s+/,$line); print "\t\t\<property name=\"".$_."\"\>".$properties{$ +_}."\<\\property\>\n" for ( keys %properties ); } } #closing style print "\t\<\\style\>\n"; } } 1; __END__
Then I call it like so:
my $css = CSS->new ({'adaptor' => 'CSS::Adaptor::XML'}); $css->read_string($css-passed-as-string); print $css->output(); $css->purge();
It gives me the css file in an xml format, which is what I was looking for. I would always be grateful for any suggestions to make this code better, stronger, faster. Thanks again for your help monks :)