Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer

Re: creating a username from a csv file

by Tanktalus (Canon)
on Oct 04, 2012 at 22:34 UTC ( #997337=note: print w/replies, xml ) Need Help??

in reply to creating a username from a csv file

Oh, where to start.

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.)

Second, parsing CSV files without Text::CSV_XS. Not a capital crime, but maybe a minor bit of flogging. (Personally, I prefer DBD::CSV, but it uses Text::CSV_XS under the covers, so I save my back from the flogging that way.)

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:

my @fieldnames = qw(Lname Fname ssn address city state zip phone1 phon +e2); my %row; @row{@fieldnames} = split(/,/, $line); # yeah, I just told you to use +Text::CSV, but I'm keeping my suggestions independent.
Again, this is just a nit, not a problem.

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 substr.

my $user = substr($Fname, 0, 1) . substr($Lname, 0, 3) . substr($ssn, +-4);
Though I have to wonder about anyone using ssn's for anything other than taxes. Seems like a privacy invasion.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://997337]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others cooling their heels in the Monastery: (5)
As of 2018-06-20 19:03 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (117 votes). Check out past polls.