1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
|
<!-- Generator: GNU source-highlight
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt><i><font color="#9A1900">#! /usr/bin/env perl</font></i>
<b><font color="#0000FF">use</font></b> strict<font color="#990000">;</font>
<b><font color="#0000FF">use</font></b> warnings<font color="#990000">;</font>
<font color="#FF0000">"I'm happy because of $x!"</font>
<b><font color="#0000FF">qq</font></b><font color="#FF0000">~I'm happy because of $x!~</font>
<b><font color="#0000FF">qq</font></b><font color="#FF0000">{I'm happy because of $x!}</font>
<b><font color="#0000FF">qq</font></b><font color="#FF0000">|I'm happy because of $x!|</font>
<b><font color="#0000FF">qq</font></b><font color="#FF0000">#I'm happy because of $x!#</font>
<b><font color="#0000FF">qq</font></b><font color="#FF0000">!I'm happy because of $x\!!</font>
<font color="#FF0000">'The variable is called $var.'</font>
<b><font color="#0000FF">q</font></b><font color="#FF0000">~The variable is called $var.~</font>
<b><font color="#0000FF">q</font></b><font color="#FF0000">|The variable is called $var.|</font>
<b><font color="#0000FF">q</font></b><font color="#FF0000">{The variable is called $var.}</font>
<b><font color="#0000FF">q</font></b><font color="#FF0000">[The variable is called $var.]</font>
<b><font color="#0000FF">q</font></b><font color="#FF0000">#The variable is called $var.#</font>
<b><font color="#0000FF">q</font></b><font color="#FF0000">!The variable is called $var.!</font>
<b><font color="#0000FF">my</font></b> <font color="#009900">$port</font> <font color="#990000">=</font> <font color="#009900">$ARGV</font><font color="#990000">[</font><font color="#993399">0</font><font color="#990000">];</font>
<i><font color="#9A1900"># prepare freqently used regexes</font></i>
<b><font color="#0000FF">my</font></b> <font color="#009900">$trailing_comment</font> <font color="#990000">=</font> <b><font color="#0000FF">qr</font></b><font color="#FF6600">#;\s*\#.*#</font><font color="#990000">;</font>
<b><font color="#0000FF">my</font></b> <font color="#009900">$leading_comment</font> <font color="#990000">=</font> <b><font color="#0000FF">qr</font></b><font color="#FF6600">|(?:^\|\n)\s*#.*|</font><font color="#990000">;</font>
<b><font color="#0000FF">my</font></b> <font color="#009900">$leading_comment</font> <font color="#990000">=</font> <b><font color="#0000FF">qr</font></b><font color="#FF6600"><(?:^\|\n)\s*#.*></font><font color="#990000">;</font>
<b><font color="#0000FF">my</font></b> <font color="#009900">$leading_comment</font> <font color="#990000">=</font> <b><font color="#0000FF">qr</font></b><font color="#FF6600">[(?:^\|\n)\]\s*#.*]</font><font color="#990000">;</font>
<b><font color="#0000FF">my</font></b> <font color="#009900">$connecting_backslash</font> <font color="#990000">=</font> <b><font color="#0000FF">qr</font></b><font color="#FF6600">@\s*\\\n\s*@</font><font color="#990000">;</font>
<b><font color="#0000FF">my</font></b> <font color="#009900">$quick_check</font> <font color="#990000">=</font> <b><font color="#0000FF">qr</font></b><font color="#FF6600">{:</font><font color="#009900">$port</font><font color="#FF6600">}</font><b><font color="#0000FF">i</font></b><font color="#990000">;</font>
<b><font color="#0000FF">my</font></b> <font color="#009900">$dependency</font> <font color="#990000">=</font> <b><font color="#0000FF">qr</font></b><font color="#FF6600">{depends_(?=[brl])(?:build|run|lib)(?:-(?:append|delete))?</font>
<font color="#FF6600"> .*</font>
<font color="#FF6600"> (?=[plb])(?:port|(?:path|lib|bin):[^:]+):(?i:</font><font color="#009900">${port}</font><font color="#FF6600">|</font><font color="#009900">$port</font><font color="#FF6600">)(\{\})(?:\s|$)}</font><b><font color="#0000FF">x</font></b><font color="#990000">;</font>
<b><font color="#0000FF">my</font></b> <font color="#009900">$dependency</font> <font color="#990000">=</font> <b><font color="#0000FF">qr</font></b><font color="#FF6600">{</font>
<font color="#FF6600"> (?=[plb])(?:port|(?:path|lib|bin):[^:]+)</font><i><font color="#9A1900"> # kind</font></i>
<font color="#FF6600"> :</font><i><font color="#9A1900"> # separator</font></i>
<font color="#FF6600"> (?i:</font><font color="#009900">${port}</font><font color="#FF6600">)(?:\s|$)</font><i><font color="#9A1900"> # name</font></i>
<font color="#FF6600"> }</font><b><font color="#0000FF">x</font></b><font color="#990000">;</font>
<font color="#009900">$/</font> <font color="#990000">=</font> <font color="#FF0000">".\n"</font><font color="#990000">;</font>
<b><font color="#0000FF">while</font></b> <font color="#990000">(</font><b><font color="#0000FF">defined</font></b><font color="#990000">(</font><b><font color="#0000FF">my</font></b> <font color="#009900">$portfile</font> <font color="#990000">=</font> <font color="#FF0000"><*/*/Portfile></font><font color="#990000">))</font> <font color="#FF0000">{</font>
<font color="#009900">@ARGV</font> <font color="#990000">=</font> <font color="#009900">$portfile</font><font color="#990000">;</font>
<b><font color="#0000FF">while</font></b> <font color="#990000">(</font><font color="#FF0000"><></font><font color="#990000">)</font> <font color="#FF0000">{</font>
<i><font color="#9A1900"># make a quick and dirty check if the port has a remote chance of</font></i>
<i><font color="#9A1900"># depending on $port</font></i>
<b><font color="#0000FF">if</font></b> <font color="#990000">(</font><font color="#009900">$_</font> <font color="#990000">=~</font> <b><font color="#0000FF">m</font></b><font color="#FF6600">\</font><font color="#009900">$quick_check</font><font color="#FF6600">|foo(.*)\</font><b><font color="#0000FF">i</font></b><font color="#990000">)</font> <font color="#FF0000">{</font>
<b><font color="#0000FF">s</font></b><font color="#FF6600">#$connecting_backslash|a\#b#\# #</font><b><font color="#0000FF">g</font></b><font color="#990000">;</font> <i><font color="#9A1900"># merge backslash-connected lines</font></i>
<b><font color="#0000FF">s</font></b><font color="#FF6600">#$connecting_backslash|a\#b#\# #</font><font color="#990000">;</font> <i><font color="#9A1900"># merge backslash-connected lines</font></i>
<b><font color="#0000FF">s</font></b><font color="#FF6600">#$connecting_backslash|a\###</font><font color="#990000">;</font> <i><font color="#9A1900"># merge backslash-connected lines</font></i>
<b><font color="#0000FF">s</font></b><font color="#FF6600">/$leading_comment|a\/b/a\/b/</font><b><font color="#0000FF">g</font></b><font color="#990000">;</font> <i><font color="#9A1900"># remove leading comments</font></i>
<b><font color="#0000FF">s</font></b><font color="#FF6600">{$trailing_comment|\}}{\}}</font><b><font color="#0000FF">g</font></b><font color="#990000">;</font> <i><font color="#9A1900"># remove trailing comments</font></i>
<b><font color="#0000FF">s</font></b><font color="#FF6600">($trailing_comment|\))(\))</font><b><font color="#0000FF">g</font></b><font color="#990000">;</font> <i><font color="#9A1900"># remove trailing comments</font></i>
<b><font color="#0000FF">s</font></b><font color="#FF6600"><$trailing_comment|\>><\>></font><b><font color="#0000FF">g</font></b><font color="#990000">;</font> <i><font color="#9A1900"># remove trailing comments</font></i>
<b><font color="#0000FF">s</font></b><font color="#FF6600">[$trailing_comment|\]][a\]b]</font><b><font color="#0000FF">g</font></b><font color="#990000">;</font> <i><font color="#9A1900"># remove trailing comments</font></i>
<b><font color="#0000FF">s</font></b><font color="#FF6600">|$trailing_comment\||a\|b|</font><b><font color="#0000FF">g</font></b><font color="#990000">;</font> <i><font color="#9A1900"># remove trailing comments</font></i>
<b><font color="#0000FF">s</font></b><font color="#FF6600">@$trailing_comment|(a\@b)@(bar\@)@</font><b><font color="#0000FF">g</font></b><font color="#990000">;</font> <i><font color="#9A1900"># just for test</font></i>
<b><font color="#0000FF">s</font></b><font color="#FF6600">_$connectingbackslash|a\_b_\_ _</font><b><font color="#0000FF">g</font></b><font color="#990000">;</font> <i><font color="#9A1900"># merge backslash-connected lines</font></i>
<b><font color="#0000FF">s</font></b><font color="#FF6600">\$trailing_comment|(a\\b)\(bar\\)\</font><b><font color="#0000FF">g</font></b><font color="#990000">;</font> <i><font color="#9A1900"># just for test</font></i>
<b><font color="#0000FF">s</font></b><font color="#FF6600">-[a\-z]{3}-fu-</font> <font color="#990000">;</font> <i><font color="#9A1900"># just for test</font></i>
<b><font color="#0000FF">s</font></b><font color="#FF6600">^\^foo^fu^</font> <font color="#990000">;</font> <i><font color="#9A1900"># just for test</font></i>
<b><font color="#0000FF">s</font></b><font color="#FF6600">$foo(\w{3})\$$fu\$1$</font> <font color="#990000">;</font> <i><font color="#9A1900"># just for test</font></i>
<b><font color="#0000FF">s</font></b><font color="#FF6600">!foo(\w{3})\!!fu\$1!</font> <font color="#990000">;</font> <i><font color="#9A1900"># just for test</font></i>
<b><font color="#0000FF">s</font></b><font color="#FF6600">?foo(\w{3})\??fu\$1?</font> <font color="#990000">;</font> <i><font color="#9A1900"># just for test</font></i>
<b><font color="#0000FF">s</font></b><font color="#FF6600">*foo(\w{3})\**fu\$1*</font> <font color="#990000">;</font> <i><font color="#9A1900"># just for test</font></i>
<i><font color="#9A1900"># let's some more exotic syntaxes ;-)</font></i>
<b><font color="#0000FF">s</font></b><font color="#FF6600">?foo(\w{3})\?\$?!fu\!1!</font> <font color="#990000">;</font> <i><font color="#9A1900"># just for test</font></i>
<b><font color="#0000FF">s</font></b><font color="#FF6600">$foo(\w{3})\$$^fu\^\$1^</font> <font color="#990000">;</font> <i><font color="#9A1900"># just for test</font></i>
<b><font color="#0000FF">s</font></b><font color="#FF6600">$foo(\w{3})\$$ ^fu\^\$1^</font> <font color="#990000">;</font> <i><font color="#9A1900"># just for test</font></i>
<b><font color="#0000FF">s</font></b><font color="#FF6600">$foo(\w{3})\$$ ^fu\^\$1^</font><b><font color="#0000FF">g</font></b> <font color="#990000">;</font> <i><font color="#9A1900"># just for test</font></i>
<b><font color="#0000FF">s</font></b><font color="#FF6600">#foo(\w{3})\## ^fu\^\$1^</font><b><font color="#0000FF">g</font></b> <font color="#990000">;</font> <i><font color="#9A1900"># just for test</font></i>
<b><font color="#0000FF">s</font></b><font color="#FF6600">$foo(\w{3})\$$ #fu\#\$1#</font><b><font color="#0000FF">g</font></b> <font color="#990000">;</font> <i><font color="#9A1900"># just for test</font></i>
<b><font color="#0000FF">if</font></b> <font color="#990000">(</font><font color="#009900">$_</font> <font color="#990000">=~</font> <b><font color="#0000FF">m</font></b><font color="#FF6600">{</font><font color="#009900">$dependency</font><font color="#FF6600">}</font><font color="#990000">)</font> <font color="#FF0000">{</font>
<font color="#009900">$portfile</font> <font color="#990000">=~</font> <b><font color="#0000FF">s</font></b><font color="#FF6600">{/Portfile$}{}</font><font color="#990000">;</font> <i><font color="#9A1900"># remove trailing '/Portfile'</font></i>
<b><font color="#0000FF">print</font></b> <font color="#FF0000">"$portfile\n"</font><font color="#990000">;</font>
<font color="#FF0000">}</font>
<font color="#FF0000">}</font>
<font color="#FF0000">}</font>
<font color="#FF0000">}</font>
</tt></pre>
|