in reply to Running a cygwin command from within activestate

when rsync is run from a bash script, shell metacharacters (i.e. wildcards) are expanded by bash in the UNIX fashion. On the other hand when you invoke rsync directly from Perl, it is called via cmd.exe that does the old MS-DOS expansion.

You can probably use some program like ProcessMonitor to see the different set of arguments that rsync gets in every case.