Syntaktisch ist das auf jeden Fall korrekt.
Aber nur mal nachgefragt: meinst du sicher:
if( $oldFile[$portNr] eq "^$currentPort|$currentServer|$currentWwpn |\n" )
oder meinst du in Wirklichkeit:
if( $oldFile[$portNr]=~m/^($currentPort|$currentServer|$currentWwpn |\n)/ms )