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