{ open(local *FILE, '>', 'delete_me.txt') or die; print FILE "Test file line $_\n" for 1..4; } { print("Two Handles\n\n"); open(local *FILE1, '<', 'delete_me.txt') or die; open(local *FILE2, '<', 'delete_me.txt') or die; print scalar ; print scalar ; print scalar ; print("$.\n"); # 3 (Line num for FILE1) print scalar ; print("$.\n"); # 1 (Line num for FILE2) print scalar ; print("$.\n"); # 2 (Line num for FILE2) print scalar ; print("$.\n"); # 4 (Line num for FILE1) } print("--\n"); { print("Does 'seek' Count As an Access?\n\n"); open(local *FILE1, '<', 'delete_me.txt') or die; open(local *FILE2, '<', 'delete_me.txt') or die; print scalar ; print scalar ; print scalar ; print("$.\n"); # 3 (Line num for FILE1) seek(FILE2, 0, 0) or die; # seek counts as an access. print("$.\n"); # 0 (Line num for FILE2) print scalar ; print("$.\n"); # 4 (Line num for FILE1) } print("--\n"); { print("Does 'eof' Count As an Access?\n\n"); open(local *FILE1, '<', 'delete_me.txt') or die; open(local *FILE2, '<', 'delete_me.txt') or die; print scalar ; print scalar ; print scalar ; print("$.\n"); # 3 (Line num for FILE1) eof(FILE2); # eof counts as an access. print("$.\n"); # 0 (Line num for FILE1) print scalar ; print("$.\n"); # 4 (Line num for FILE1) } print("--\n"); { print("Does 'read' Count As an Access?\n\n"); open(local *FILE1, '<', 'delete_me.txt') or die; open(local *FILE2, '<', 'delete_me.txt') or die; print scalar ; print scalar ; print scalar ; print("$.\n"); # 3 (Line num for FILE1) read(FILE2, my $buf='', 1) or die; # read doesn't count print("$.\n"); # 3 (Line num for FILE1) print scalar ; print("$.\n"); # 4 (Line num for FILE1) } print("--\n"); { print("Assigning to \$.\n\n"); open(local *FILE, '<', 'delete_me.txt') or die; print scalar ; print scalar ; print scalar ; print("$.\n"); # 3 $. = 7; # Works like "#line" print("$.\n"); # 7 print scalar ; # Prints the 4th line. print("$.\n"); # 8 } unlink 'delete_me.txt';