First, this is a beginners list, so there will be no tearing to shreds.
Secondly:
The Great Truth of Perl: "There is always more than one way to do it" .
suggestion:
replace this: $j = scalar(@array);
$j--;
for $d (0 .. $j)
with this:
foreach $d (0 .. $#array) {
regards,
jimbob smith
-----Original Message-----
From: Michael Carmody [mailto:[EMAIL PROTECTED]]
Sent: Thursday, July 26, 2001 2:30 AM
To: [EMAIL PROTECTED]
Subject: Tear me to shreds please...
Dear great PERL masters,
This is my first major code in perl that works. It creates an LDIF file for
our openLDAP server.
So aside from use strict (YES I KNOW, but i started this project well
before I learnt that, and I couldn't be buggered going through and changing
it all) what else is wrong with this code. It works but how can it work
better...
input file is along the lines of:
name,surname,[EMAIL PROTECTED],56789,molecular
repeated to about 60 lines...
#############################################
#Code begins HERE
#############################################
use warnings;
#Main Program Begins Here
open (ADDSRC, "data.csv") || die ("Unable to open file\n");
@addsrc=<ADDSRC>;
splice (@addsrc,0,1);
foreach $line (@addsrc)
{
@addarr = split(/,/, $line);
push @fname, $addarr[0];
push @sname, $addarr[1];
push @email, $addarr[2];
push @exten, $addarr[3];
chomp $addarr[4];
push @section, $addarr[4];
}
@data = (\@fname, \@sname, \@email, \@exten, \@section);
close (ADDSRC);
open (LDIF, ">mdudat.ldif") || die ("Unable to write to file!\n");
print LDIF "#Base level\n";
print LDIF "dn: dc=mdu\n";
print LDIF "objectclass: top\n";
print LDIF "objectclass: organization\n";
print LDIF "o:mdu\n";
print LDIF "description: This is MDU's base dn.\n\n";
print LDIF "#staff list\n";
print LDIF "dn: dc=staff,dc=mdu\n";
print LDIF "objectclass:top\n";
print LDIF "objectclass:organizationalunit\n";
print LDIF "ou:staff\n";
print LDIF "Description: This is the tree where MDU's Staff are stored\n\n";
for $i ( 0 .. $#fname )
{
print LDIF "dn: cn=$data[0][$i] $data[1][$i],dc=staff,dc=mdu\n";
print LDIF "objectclass: inetorgperson\n";
print LDIF "cn:$data[0][$i] $data[1][$i]\n";
print LDIF "sn: $data[1][$i]\n";
$c = ($data[4][$i] =~ s/\//\//g);
if ($c eq "")
{
print LDIF "sn: $data[4][$i]\n";
}
else
{
@array = split(/\//,$data[4][$i]);
$j = scalar(@array);
$j--;
for $d (0 .. $j)
{print LDIF ("sn:",$array[$d],"\n");}
}
print LDIF "mail: $data[2][$i]\n";
print LDIF "telephonenumber: $data[3][$i]\n\n";
}
close (LDIF);
##############
#end code
##############
This was done on activeperl for Win32...
Michael Carmody
MDU, Public Health Lab
Dept. of Microbiology and Immunology
The University of Melbourne, Parkville
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]