in reply to Re^9: Perl Builds an LDIF
in thread Perl Builds an LDIF

Grateful for your guidance, I submit the following error based on your coding, please advise.

Can't modify defined operator in scalar assignment at build4c22.pl line 12, near "<PERSON>) " Execution of build4c22.pl aborted due to compilation errors (#1) (F) You aren't allowed to assign to the item indicated, or otherwise try to change it, such as with an auto-increment. BEGIN not safe after errors--compilation aborted at c:/Perl/lib/Carp/Heavy.pm line 11. Compilation failed in require at c:/Perl/lib/Carp.pm line 33.

#! perl use strict; use warnings; use diagnostics; open PERSON, "<", "ou3" or die "Cannot read 'ou3': $!"; open MGR, "<", "ou8" or die "Cannot read 'ou8': $!"; open OUT, ">", "buildAD.ldif" or die "Cannot write to 'buildAD.ldif': +$!"; truncate (OUT, 0); while (defined my $input1 = <PERSON>) { my $input2 = <MGR> or die "No file MGR for $input1"; chomp $input1; chomp $input2; print OUT $input1; print OUT "changetype: modify"; print OUT "replace: manager"; print OUT $input2, "\n"; } close PERSON; close MGR; close OUT; exit;

Replies are listed 'Best First'.
Re^11: Perl Builds an LDIF
by NetWallah (Canon) on Jun 23, 2010 at 04:52 UTC
    Sorry - I did not verify the syntax. The correct code should read:
    while ( defined(my $input1 = <PERSON>) ) {

         Syntactic sugar causes cancer of the semicolon.        --Alan Perlis

      Perfect. That code does what we want. Here it is.

      #! perl use strict; use warnings; use diagnostics; open PERSON, "<", "ou3" or die "Cannot read 'ou3': $!"; open MGR, "<", "ou8" or die "Cannot read 'ou8': $!"; open OUT, ">", "buildAD.ldif" or die "Cannot write to 'buildAD.ldif': +$!"; truncate (OUT, 0); while (defined (my $input1 = <PERSON>)) { my $input2 = <MGR> or die "No file MGR for $input1"; chomp $input1; chomp $input2; print OUT $input1, "\n"; print OUT "changetype: modify", "\n"; print OUT "replace: manager", "\n"; print OUT $input2, "\n\n"; } close PERSON; close MGR; close OUT; exit;