<?xml version="1.0" encoding="windows-1252"?>
<node id="632152" title="Practical example of &quot;Is Perl code maintainable&quot;" created="2007-08-13 03:44:44" updated="2007-08-12 23:44:44">
<type id="120">
perlmeditation</type>
<author id="176576">
eyepopslikeamosquito</author>
<data>
<field name="doctext">
&lt;P&gt;
Further to [id://631776], today I inherited some code written by an external contractor. Here is one of his functions that caught my eye:
&lt;CODE&gt;
sub file_mode {
  my ($file) = @_;
  if( ! -f $file ) {
    return -1;
  }
  my $dummy;
  my $mode;
  ($dummy,$dummy, $mode, $dummy, $dummy, $dummy, $dummy, $dummy, $dummy,
          $dummy, $dummy, $dummy, $dummy) = stat($file);
  return $mode;
}
&lt;/CODE&gt;
&lt;/P&gt;

&lt;P&gt;
Maybe he thought he was writing in a very "clear" style, but I had to reach for my sunglasses looking through this code. :-)
Assuming that I don't change the (dubious) interface, my instinct would be to write this function as:
&lt;CODE&gt;
sub file_mode {
  -f shift or return -1;
  return (stat(_))[2];
}
&lt;/CODE&gt;
Then I thought, maybe a Perl novice would find the original function easier to understand and maintain. I guess it's like writing, you should write to a level appropriate to your audience. What do you think?
&lt;/P&gt;
</field>
</data>
</node>
