use Modern::Perl; # updates storage_racks.location value from csv file use lib '/home/raj/perl-lib'; use Data::Printer alias => 'ddp'; use Local::DB; use Text::CSV; use IO::File; my $dbix = Local::DB->dbix({ dbname => 'hilis4' }); my $src_file = './storage_rack_locations.csv'; my $io = new IO::File; open( $io, '<', $src_file ) || die $!; my $opt = { binary => 1 }; # recommended to set true my $csv = Text::CSV->new($opt); # ddp $csv; exit; my $head = $csv->getline($io); $csv->column_names( $head ); my $i = 0; my $tbl = 'hilis4.storage_racks'; while ( my $ref = $csv->getline_hr($io) ) { # ddp $ref; my $plateId = $ref->{'Plate ID'} or next; unless ( $dbix->count($tbl, { plateId => $plateId }) ) { warn "$plateId not present"; next; } warn "$plateId IS present"; next; my $rack = $ref->{Rack}; # warn $rack; my $tray = $ref->{Tray}; # warn $tray; my $type = $ref->{Type}; # warn $type; $rack =~ s/14MG - //; $type =~ s/Real\-time/RealTime/; my $location = join '/', $type, $rack, $tray; # ddp $location; $dbix->update($tbl, { storage_location => $location }, { plateId => $plateId } ); $i++; } warn "updated $i records";