Yes, it is a blocking call:
% perl -E 'system(q[opera http://www.perlmonks.org/]); say "hello!" '
+
hello!
That only prints "hello!" once Opera exists. Non-blocking alternatives are:
% perl -E 'system(q[opera http://www.perlmonks.org/ &]); say "hello!"
+'
hello!
i.e. launching in the background, or
% perl -E '$r = fork; if($r == 0) { exec(q[opera http://www.perlmonks.
+org/]) } elsif(defined $r) { say "hello!" }'
hello!
which
forks off a child process, and uses
exec (so the child process doesn't hang around waiting for the browser process to end).