<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xml:base="https://www.webmaster-forums.net/crss/node/1013127" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title></title>
    <link>https://www.webmaster-forums.net/crss/node/1013127</link>
    <description></description>
    <language>en</language>
          <item>
    <title></title>
    <link>https://www.webmaster-forums.net/serverside-scripting/begin-condition#comment-1076802</link>
    <description> &lt;p&gt;We&#039;ll use BEGIN {} blocks to force some things that we know we need prior to the program actually running.&lt;/p&gt;
&lt;p&gt;In most CGI programs, it&#039;s not necessary to do this, but if you&#039;re taking advantage of mod_perl or fastCGI, you can manipulate the begin blocks to preload some variables.&lt;/p&gt;
&lt;p&gt;Since the BEGIN only gets evaluated at compile time, in a mod_perl program, the BEGIN block gets run when apache first loads the program into memory, and from that point on, your program has access to anything inside the BEGIN block.&lt;/p&gt;
&lt;p&gt;as an example:&lt;br /&gt;
&lt;div class=&quot;codeblock&quot;&gt;&lt;code&gt;&amp;nbsp; package foo;&lt;br /&gt;&lt;br /&gt;&amp;nbsp; ## This gets run when the CGI is first loaded by apache&lt;br /&gt;&amp;nbsp; BEGIN { use vars qw ( %config );&lt;br /&gt;&amp;nbsp; BEGIN {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ## Maybe read in some settings from a file.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; open (&amp;quot;CFG&amp;quot;, &amp;quot;/path/to/my/configfile&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(&amp;lt;CFG&amp;gt;) { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chomp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; my ($var, $val) = split(/\=/);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $config{$var} = $val;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; close(CFG);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ## Bring in some modules ...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; use DB_File;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; use File::Copy;&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp; ## All the stuff from the BEGIN Blocks is read in.&lt;br /&gt;&amp;nbsp; ## If we&amp;#039;re running under mod_perl or fastCGI, the&lt;br /&gt;&amp;nbsp; ## routine below never needs gets run, since the &lt;br /&gt;&amp;nbsp; ## %config hash was loaded when it was compiled&lt;br /&gt;&amp;nbsp; ## the first time you ran it.&amp;nbsp;&amp;nbsp; %config will&lt;br /&gt;&amp;nbsp; ## always be ready within the program from this point&lt;br /&gt;&amp;nbsp; ## forward, saving your program the overhead of opening&lt;br /&gt;&amp;nbsp; ## up and reading that file each time the .cgi gets called.... &lt;br /&gt;&amp;nbsp; ##&lt;br /&gt;&amp;nbsp; ## The same goes for the 2 &amp;quot;use&amp;quot; lines.&lt;br /&gt;&amp;nbsp; ## Since perl&amp;#039;s smart enough to know that it already&lt;br /&gt;&amp;nbsp; ## used them in the begin block, it will skip right&lt;br /&gt;&amp;nbsp; ## over them, again, saving you precious execution time.&lt;br /&gt;&amp;nbsp; ## When running in non- mod_perl or fastCGI mode, they&amp;#039;ll&lt;br /&gt;&amp;nbsp; ## just get &amp;quot;used&amp;quot; over and over.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; unless ( defined %config ) {&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; open (&amp;quot;CFG&amp;quot;, &amp;quot;/path/to/my/configfile&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(&amp;lt;CFG&amp;gt;) { &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; chomp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; my ($var, $val) = split(/\=/);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $config{$var} = $val;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; close(CFG);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp; }&lt;/code&gt;&lt;/div&gt;&#039;&lt;/p&gt;
&lt;p&gt;Hope that cleared things up a bit&lt;/p&gt;
&lt;p&gt;John&lt;/p&gt;
 </description>
     <pubDate>Tue, 16 Jan 2001 18:28:00 +0000</pubDate>
 <dc:creator>jcokos</dc:creator>
 <guid isPermaLink="false">comment 1076802 at https://www.webmaster-forums.net</guid>
  </item>
  <item>
    <title></title>
    <link>https://www.webmaster-forums.net/serverside-scripting/begin-condition#comment-1076519</link>
    <description> &lt;p&gt;The BEGIN { } routine forces whatever code is in there to run at compile time.&lt;/p&gt;
&lt;p&gt;This makes it very handy to unshift the @INC for custom paths when using &#039;use&#039; or &#039;require&#039;.&lt;/p&gt;
&lt;p&gt;Basically, anything you need to do before the code is executed can be put in there.&lt;/p&gt;
 </description>
     <pubDate>Wed, 10 Jan 2001 02:55:03 +0000</pubDate>
 <dc:creator>Matt@Ikonboard</dc:creator>
 <guid isPermaLink="false">comment 1076519 at https://www.webmaster-forums.net</guid>
  </item>
  </channel>
</rss>
