Wieso sollte das mit
Win32::Internet nicht gehen?
Eine geöffnete
$URL hat laut Dokumentation unter anderem die Methoden
$URL->QueryDataAvailable() und
$URL->ReadFile($nbytes) damit kann man doch einfach eine Schleife zusammenbauen, die die Daten blockweise einliest und zwischendurch irgendeine Statusanzeige aktualisiert.
When C++ is your hammer, every problem looks like your thumb.