Im zweiten Beispiel steht der Diamantoperator im Listenkontext, was dazu führt, dass die Datenströme
$DFH und
$CFH komplett ausgelesen werden und dann die ersten beiden durch
$/ separierten Blöcke, die eingelesen wurden,
$line->[0] und
$line->[1] zugewiesen werden, während im zweiten Beispiel aus jedem Datenstrom nur ein Block bis zum nächsten Auftreten von
$/ gelesen und abgespeichert wird, weil hier ein Skalarkontext besteht.
When C++ is your hammer, every problem looks like your thumb.