note
Tanktalus
<p>Oh, where to start.</p>
<p>First off, you have both open FILE and open my $fh. Stick to one style. Specifically the latter. Yes, it's a minor nit normally, but it got promoted to a major nit (if not, at least a lieutenant nit) by virtue of inconsistency. Also, you don't check the first open's return - stick the "or die" in there as well. (Again, a lieutenant nit for the same reason.)</p>
<p>Second, parsing CSV files without [mod://Text::CSV_XS]. Not a capital crime, but maybe a minor bit of flogging. (Personally, [http://perl5maven.com/calculate-bank-balance-take-two-dbd-csv|I prefer] [mod://DBD::CSV], but it uses [mod://Text::CSV_XS] under the covers, so I save my back from the flogging that way.)</p>
<p>Next, your assignment to all those variables. When I'm doing a massive split like this, I like to use a hash instead of an array. Or individually-named variables:
<c>
my @fieldnames = qw(Lname Fname ssn address city state zip phone1 phone2);
my %row;
@row{@fieldnames} = split(/,/, $line); # yeah, I just told you to use Text::CSV, but I'm keeping my suggestions independent.
</c>
Again, this is just a nit, not a problem.</p>
<p>You didn't quite show us what you were trying, only alluded to it and gave us context. But the function you're looking for is [doc://substr].
<c>
my $user = substr($Fname, 0, 1) . substr($Lname, 0, 3) . substr($ssn, -4);
</c>
Though I have to wonder about anyone using ssn's for anything other than taxes. Seems like a privacy invasion.</p>
997328
997328