snoopyac has asked for the wisdom of the Perl Monks concerning the following question:
Problem:
I have various files named *.language which contain hashes like: $LANGUAGE{content_index_misc_this} = qq~blah~; I need to convert any such items to $LANGUAGE{CONTENT_INDEX}{MISC}{THIS} = qq~blah~; The CONTENT_INDEX part is parsed from the filename, eg content_index.language. The rest needs to be converted to upper case and '_' switched for '}{'. The files are not structured, the hashes could be anywhere with none or many on each line.
I have been given this code (thanks), however, it presumes there is only two hashes to create after the content_index (misc, this) and there could be several. Also, the content_index part will change depending on the file being parsed.
#!c:\perl\bin\perl.exe $c="\$LANGUAGE{content_index_misc_this} = qq~blah~;"; $c =~ s/(\{)(.+)(\})/$1\ U$2\E$3/g; $c =~ s/_/\}\{/g; $c =~ s/(content)\}\{( index)/$1_$2/i; print $c, "\n";'
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Perl Parsing Pedantics
by Transient (Hermit) on Aug 19, 2005 at 14:15 UTC | |
|
Re: Perl Parsing Pedantics (Data::Diver)
by tye (Sage) on Aug 19, 2005 at 23:46 UTC | |
|
Re: Perl Parsing Pedantics
by aukjan (Friar) on Aug 19, 2005 at 13:46 UTC | |
by 5mi11er (Deacon) on Aug 19, 2005 at 15:00 UTC |