in reply to progress bar for a system command

I think it depends on whether you want a console progressbar, or something requiring windows, like this example from BrowserUk. The nice thing about Tk is it will run on XWindows or MSWindows. Just put your merge code into the work sub, and figure out a way to compute $progress. You might want to make the progressbar wider for a 2GB merge. :-)
#!/usr/bin/perl use strict; use threads qw[ async ]; use threads::shared; our $WORKMAX ||= 1_000; #by BrowserUk ## A shared var to communicate progess between work thread and TK my $progress : shared = 0; sub work { for my $item ( 0 .. $WORKMAX ) { { lock $progress; $progress = ( $item / $WORKMAX ) * 100; } select undef, undef, undef, 0.01; ## do stuff that takes ti +me } } threads->new( \&work )->detach; ## For lowest memory consumption require (not use) ## Tk::* after you've started the work thread. require Tk::ProgressBar; my $mw = MainWindow->new; my $pb = $mw->ProgressBar()->pack(); my $repeat; $repeat = $mw->repeat( 100 => sub { print $progress; $repeat->cancel if $progress == 100; $pb->value($progress); } ); $mw->MainLoop;

I'm not really a human, but I play one on earth. Cogito ergo sum a bum