05-07-2008
Read csv into Hash array?
Hi all experts,
May I know how to read a csv file and read the content in a hash in PERL?
Currently, I hard-coded and defined it in my code. I wanna know how to make up the %mymap hash thru reading the cfg.txt
====
csv file(cfg.txt):
888,444
999,333
===
#!/usr/bin/perl
my $file='p.csv';
my %mymap;
$mymap{888} = 444;
$mymap{999} = 333;
open(my $data, '<',$file) or die "Cannot open 'file'\n";
while (my $line=<$data>) {
my @column = split ",", $line;
if ($line =~ /Doc/) {
if (exists $mymap{$column[2]}) {
$column[3]=$mymap{$column[2]};}
foreach my $i (0..$#column) {
if ($i > 0) {
print ",",$column[$i];}
else {
print $column[$i];}
}}
else {
print $line}
}
exit;
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
Begginer alert!!
I have just started learning perl and have got stuck. I need to initialize a hash array with values from a list. I've been told to do this using a split command, but its just not happening.
Here is the script and output:
SCRIPT:
#!/bin/perl
system("clear");
... (5 Replies)
Discussion started by: topcat8
5 Replies
2. Shell Programming and Scripting
I have a little problem. To keep a configuration simple, I've exceeded my perl knowledge. :-) I've worked with multi-dimentional arrays before, but this one has me beat:
@info = (
{
'defval' => 'abc'
'stats' = (
{ 'name' => 'a', },
{ 'name' =>... (1 Reply)
Discussion started by: jsmoriss
1 Replies
3. Shell Programming and Scripting
Hi,i have a code fragment below.
%tag = (); #line 1
$tag{'info'} = $datastring; #line 2
$resp = $ua->request( #$ua is a user agent
POST 'http://10.2.3.0' ,
Content_Type => application/x-www-form-urlencoded
Content => #line 3 I am not sure of what the code... (3 Replies)
Discussion started by: new2ss
3 Replies
4. Shell Programming and Scripting
suppose my @{$data1{$callid}}; cotains
one two three
three five six
one two three
of random patterns but each item is separated by white space or tab,
Below code extract and get rid of the whitespace perfectly so that it shows now like this
onetwothree
threefivesix... (2 Replies)
Discussion started by: hankooknara
2 Replies
5. Shell Programming and Scripting
Hi ,
I have an input.txt file that i read
node: id= c1, class=nb, cx=100, cy=100, r=10
node: id=c2, class=b, cx=150, cy=130, r=10
node: id=c3, class=nb, cx=50, cy=80, r=10
node: id=c4, class=nb, cx=120, cy=200, r=10
i split over , and = to create a global array and then passed it to a... (6 Replies)
Discussion started by: rsanjay
6 Replies
6. Web Development
Hi,
A piece of script from Perl-cookbook I do not understand, and post here for explanation.
The purpose is to find the element in either array (union), and in both array (intersection). Thank you in advance.
@a=qw(1 3 5 6 7 8);
@b=qw(2 3 5 7 9);
foreach $e (@a, @b) {$union{$e}++ &&... (3 Replies)
Discussion started by: yifangt
3 Replies
7. Shell Programming and Scripting
I have 2 arrays:
@array1 outputs the following:
1
1
1
2
@array2 outputs the following
A
B
C
D (2 Replies)
Discussion started by: streetfighter2
2 Replies
8. Shell Programming and Scripting
Hi guys
I have this part of a perl script that returns and odd error
if ($args{software}) {
print " @DISTFILE_GROUPS $output->{distfile_groups}->{ get_rdist_groups}\n";
and the error is
Can't coerce array into hash at
i've never seed this error before, any ideas
thanks... (0 Replies)
Discussion started by: ab52
0 Replies
9. Shell Programming and Scripting
How do I get the unique hashes from an array of hashes?
@ar1 = ( {a=>1,b=>2}, {c=>3,d=>4},{a=>1,b=>2});I need :
@ar2 = ( {a=>1,b=>2}, {c=>3,d=>4});Thanks. (2 Replies)
Discussion started by: shellwell
2 Replies
10. Programming
Hi All
I have been using a curl code to output an hash that looks like this
$VAR1 = {
'data'... (5 Replies)
Discussion started by: ab52
5 Replies
LEARN ABOUT OSX
tie::hash::namedcapture
Tie::Hash::NamedCapture(3pm) Perl Programmers Reference Guide Tie::Hash::NamedCapture(3pm)
NAME
Tie::Hash::NamedCapture - Named regexp capture buffers
SYNOPSIS
tie my %hash, "Tie::Hash::NamedCapture";
# %hash now behaves like %+
tie my %hash, "Tie::Hash::NamedCapture", all => 1;
# %hash now access buffers from regexp in $qr like %-
DESCRIPTION
This module is used to implement the special hashes "%+" and "%-", but it can be used to tie other variables as you choose.
When the "all" parameter is provided, then the tied hash elements will be array refs listing the contents of each capture buffer whose name
is the same as the associated hash key. If none of these buffers were involved in the match, the contents of that array ref will be as many
"undef" values as there are capture buffers with that name. In other words, the tied hash will behave as "%-".
When the "all" parameter is omitted or false, then the tied hash elements will be the contents of the leftmost defined buffer with the name
of the associated hash key. In other words, the tied hash will behave as "%+".
The keys of "%-"-like hashes correspond to all buffer names found in the regular expression; the keys of "%+"-like hashes list only the
names of buffers that have captured (and that are thus associated to defined values).
SEE ALSO
perlreapi, re, "Pragmatic Modules" in perlmodlib, "%+" in perlvar, "%-" in perlvar.
perl v5.16.2 2012-10-11 Tie::Hash::NamedCapture(3pm)