PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : reguläre Ausdrücke



GordonB
10-11-1999, 09:46
Hi,

ich habe ein Script geschrieben, was ein Perl - Script zu einer HTML - Datei konvertiert. (html code wird erzeugt und die Befehle wie if, while usw. werde fettgedruckt)
Nur leider stehe ich seit 2 Tagen vor dem Problem, daß wenn ich beispielsweise ein if ersetzten will er mir automatisch auf ein "shift" umformatiert. (Was ja auch logisch ist... http://www.linuxforen.de/ubb/frown.gif )
Somit dachte ich mir ich füge einfache in die Regexp noch einkleines Konstruckt mit ein, in dieser Form etwa

s/[^a-zA-Z ]if/if<\/b>/g;

Jetzt wird das shift nicht mehr fettgedruckt, sondern normal dargestellt. Jedoch werden jetzt auch keine if's mehr gebold...
Außerdem werden jetzt auch noch mehrer Leerzeichen einfach weg gelassen.
Ich stehe for einem Rätsel...

Hier erst das Script:

<pre>

#!/usr/bin/perl


use Getopt::Long;

$result = &GetOptions("version", \$version_p,
"o=s" => \$oname_p);
print "Version 0.01\n" if $version_p;

&usage() if not @ARGV;


sub usage
{
print <<"EOUSAGE";
usage: $0 [-o output-file] input-file
where options may be:
--version
o- name

EOUSAGE
exit 1;
}
$arg1 = shift @ARGV;

sub meta
{
s/&/&amp;/g;
s/</&lt;/g;
s/>/&gt;/g;
s/"/&quot;/g;
s/ /&nbsp;/g;
}

if ($oname_p)
{
open INPUT, $arg1 &#0124; &#0124; die "Is nich \n\n";
while(<INPUT>)
{
chop $_;
&meta;
s/\t/&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/g;
s/if\W/[b]if<\/b>/g;
s/else/[b]else<\/b>/g;
s/elsif/[b]elsif<\/b>/g;
s/while/[b]while<\/b>/g;
s/do/[b]do<\/b>/g;
s/die/[b]die<\/b>/g;
s/sub/[b]sub<\/b>/g;
$_ .= "
\n";
push(@output, $_);

}
close INPUT;

print "<html><head><title> Test Output von $arg1 </title></head><body>";


print @output;

print "</body></html>";

}

else
{

}

</pre>

Und hier mal eine Seite die konvertiert wurde....

>#!/usr/bin/perl&nbsp;
use&nbsp;Getopt::Long;
$result&nbsp;=&nbsp;&amp;GetOptions(&quot;version&quot;,&nbsp;\$version_p,

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;o=s&quot;&nbsp;=&gt;&nbsp;\$oname_p);

print&nbsp;&quot;Version&nbsp;0.01\n&quot;&nbsp;[b]ifnbsp;$version_p;
&amp;usage()&nbsp;ifnbsp;not&nbsp;@ARGV;
sub&nbsp;usage

{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;&lt;&lt;&quot;EOUSAGE&quot;;

usage:&nbsp;$0&nbsp;[-o&nbsp;output-file]&nbsp;input-file

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;where&nbsp;options&nbsp;may&nbsp;be:

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;--version

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o-&nbsp;name
EOUSAGE

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit&nbsp;1;

}

$arg1&nbsp;=&nbsp;shift&nbsp;@ARGV;
sub&nbsp;meta

{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s/&amp;/&amp;amp;/g;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s/&lt;/&amp;lt;/g;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s/&gt;/&amp;gt;/g;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s/&quot;/&amp;quot;/g;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s/&nbsp;/&amp;nbsp;/g;

}
ifnbsp;($oname_p)

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;open&nbsp;INPUT,&nbsp;$arg1&nbsp;&#0124; &#0124;&nbsp;die&nbsp;&qu ot;Is&nbsp;nich&nbsp;\n\n&quot;;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(&lt;INPUT&gt; )

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chop&nbsp;$_;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;meta;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s/\t/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp; nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/g;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s/ifW/&lt;b&gt;iflt;\/b&gt;/g;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s/else/&lt;b&gt;else&lt;\/b&gt;/g;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s/elsif&lt;b&gt;elsiflt;\/b&gt;/g;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s/while/&lt;b&gt;while&lt;\/b&gt;/g;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s/do/&lt;b&gt;do&lt;\/b&gt;/g;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s/die/&lt;b&gt;die&lt;\/b&gt;/g;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s/sub/&lt;b&gt;sub&lt;\/b&gt;/g;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;$_&nbsp;.=&nbsp;&quot;&lt;br&gt;\n&quot;;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;push(@output,&nbsp;$_);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;close&nbsp;INPUT;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;& nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;&quot;&lt;html&gt;&lt;head&gt;&lt;title&gt; &nbsp; Test&nbsp;Output&nbsp;von&nbsp;$arg1&nbsp;&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&quot;;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;@output;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;&quot;&lt;/body&gt;&lt;/html&gt;&quot;;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
else

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;


Also ich bin ratlos, vielleicht könnt Ihr mir ja helfen...