in reply to Replacing second occurrence of a character
For your application I would prefer split. For one, it does remove all pipes, and secondly, you get all your bits as separate items for further processing. For example, your data "Name and Number" really looks more like "Number and Name", so if you split it you could change the order.
use strict; use warnings; while(<DATA>){ chomp; my( $type, @data ) = split /[|]/; if( $type eq 'Room Title:' ) { print "\n$type $data[0]\n"; print "Department: $data[1]\n"; print "Level: $data[2]\n"; } else { print "$type @data\n"; } } __DATA__ Name and Number:|47355|Multipurpose Room - General Scheme:|SCHEME 5.1|Water Room Title:|ELEC RM|Engineering|LEVEL 4
|
|---|