chop (%key_hash = map { split /\s*[|]\s*/,$_,2 } grep (!/^$/,)); ^ ^ ^ ^ ^ ^ ^ ^ | | | | | | | | | | | | | | | + - File handle | | | | | | + - Let only non-empty file lines pass | | | | | + - Split string into two parts | | | | + - Default scalar containing a file line | | | + - Zero or more whitespaces | | + - Vertical bar as only member in character set | + - Zero or more whitespaces + - Should be 'chomp' to remove the trailing newlines