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]

Reply via email to