<html>#2573: Cactus treats a directory "configs/FOO/ThornList" as an empty thornlist file
<table style='border-spacing: 1ex 0pt; '>
<tr><td style='text-align:right'> Reporter:</td><td>Roland Haas</td></tr>
<tr><td style='text-align:right'>   Status:</td><td>new</td></tr>
<tr><td style='text-align:right'>Milestone:</td><td></td></tr>
<tr><td style='text-align:right'>  Version:</td><td>development version</td></tr>
<tr><td style='text-align:right'>     Type:</td><td>bug</td></tr>
<tr><td style='text-align:right'> Priority:</td><td>minor</td></tr>
<tr><td style='text-align:right'>Component:</td><td>Cactus</td></tr>
</table>

<p>Perl lets one open a directory with the regular <code>open</code> command but then reports no content in it ie it shows up as an empty file. Eg.</p>
<div class="codehilite language-perl"><pre><span></span><span class="ch">#!/usr/bin/perl</span>

<span class="k">use</span> <span class="nn">strict</span><span class="p">;</span>
<span class="k">use</span> <span class="nn">warnings</span><span class="p">;</span>

<span class="nb">open</span><span class="p">(</span><span class="k">my</span> <span class="nv">$FH</span><span class="p">,</span> <span class="s">&quot;&lt;&quot;</span><span class="p">,</span> <span class="s">&quot;empty&quot;</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">die</span><span class="p">;</span>
<span class="k">print</span> <span class="s">&quot;$FH\n&quot;</span><span class="p">;</span>
<span class="k">while</span><span class="p">(</span><span class="sr">&lt;$FH&gt;</span><span class="p">)</span> <span class="p">{</span>
  <span class="k">print</span> <span class="nv">$_</span><span class="p">;</span>
<span class="p">}</span>
<span class="nb">close</span> <span class="nv">$FH</span><span class="p">;</span>
</pre></div>


<p>will work without error after a <code>mkdir empty</code>.</p>
<p>The suggested solution seems to be to use Perl’s <code>-f</code> operator to check for file type first. Eg something like:</p>
<div class="codehilite language-perl"><pre><span></span><span class="o">-</span><span class="n">f</span> <span class="s">&quot;empty&quot;</span> <span class="o">&amp;&amp;</span> <span class="nb">open</span><span class="p">(</span><span class="k">my</span> <span class="nv">$FH</span><span class="p">,</span> <span class="s">&quot;&lt;&quot;</span><span class="p">,</span> <span class="s">&quot;empty&quot;</span><span class="p">)</span> <span class="ow">or</span> <span class="nb">die</span><span class="p">;</span>
</pre></div>


<p>which I verified to fail if empty is a directory or a symbolic link to a directory but works fine for files and symbolic links t
<p>--<br/>
Ticket URL: <a href='https://bitbucket.org/einsteintoolkit/tickets/issues/2573/cactus-treats-a-directory-configs-foo'>https://bitbucket.org/einsteintoolkit/tickets/issues/2573/cactus-treats-a-directory-configs-foo</a></p>
</html>