I have written a small script to convert mp4 to mp3 files and I am getting stuck when files contain single quote.
You seem to be constructing command line strings and feeding them to a shell. This is complicated and best handled by already written modules, such as String::ShellQuote. Note that if you do it incorrectly, your program faces the danger of a shell injection.
If you use list form of system (e.g. system "ffmpeg", "-loglevel", "warning", "-i", $infile, "-vn", "-aq", 5, "-acodec", "libvorbis", $outfile instead of system "ffmpeg -loglevel warning -i ".quote($infile)." -vn -aq 5 -acodec libvorbis ".quote($outfile), no shell sits between your script and the music encoding process and the risk of shell injection is averted.