This really doesn't have much to do with your question, but is more a style thing... but anyway, why do you chop $row when you're just using the first item returned by split? As far as I can tell this doesn't really help... Anyway, it might be something to think about.
while(<DB>) {
print ( split(/\|/) )[0];
}
Update: Oh yeah, this code just does the same thing as yours (so nothing new here). See posts above and below for actual insightful information :p