O símbolo @
é especial dentro de strings com aspas duplas em Perl.
Ele está tentando encontrar uma matriz chamada @hostname
e expandi-la. @hostname
não está definido, por isso está expandindo para rsync -qtz user:/tmp/p /tmp
.
Tente
system("rsync -qtz user\@hostname:/tmp/p /tmp");
em vez disso.