Use of unitialized value in array element at controlflow.plx (#1) line 25 (W uninitialized) An undefined value was used as if it were already defined. It was interpreted as a "" or a 0, but maybe it was a + mistake. To suppress this warning assign a defined value to your var +iables. #!/usr/bin/perl # controlflow.plx =head1 DESCRIPTION Program will read in an html file and add word spacing style attributes to header, paragraph and list tags. and print out doc in DOS window. Presence of tags/attributes will be tested for via an 'if-else' control structure. =head2 ALTERNATIVE FILE OPENING CODE $htmlFile = "E:/Documents and Settings/Richard Lamb/My Documents/HTML/dummy.html"; open (INFILE, "<".$htmlFile) or die("$!: Can't read source file!\n"); =cut use warnings; use diagnostics; use strict; # Declare and initialise variables. my @htmlLines; # Open HTML test file and read into array. open (INFILE, "E:/Documents and Settings/Richard Lamb/My Documents/HTML/dummy.html"), or die ("$!: Can't open this file.\n"); @htmlLines = ; close (INFILE); # Check for attribute pattern in file if($htmlLines[my $i] !~ m/word-spacing:\s?[\d]+px/ig) # This is line 25 { # Loop through file stored in array, inserting attribute foreach my $line (@htmlLines) { $line =~ s/(/$1; word-spacing: 30px">/ig; # case insensitivity and global search for pattern. $line =~ s/(/$1; word-spacing: 10px">/ig; $line =~ s/(/$1; word-spacing: 10px">/ig; } # Print modified file in DOS window for my $i (0..@htmlLines-1) { print $htmlLines[$i]; } } else { print "Attribute not in HTML file\n"; }