I'm new to using Linux and have found that converting mp3's to wav's and then burning them to disc isn't nearly as easy as it was in Windows. But hey, that's part of the fun.

I've found a bunch of shell commands that will convert and burn, but entering each one in seperately is a pain. I'm trying to write a PERL script that I can use to automate this a bit.

My problem is when dealing with the file names. I use the readdir() command to grab all of the file names in a given directory. That part works fine, but when I attemp to issue commands based on the taken file names, the shell complains about some of them. Here is the error I get when just attempting to echo the file name to the screen:

original file name:
alicia keys - 11 - mr man(feat jimmy cozier) - simplemp3s.mp3

sh: -c: line 1: syntax error near unexpected token `way(i'
sh: -c: line 1: `echo alicia\ keys\ -\ 12\ -\ never\ felt\ this\ way(inter\ -\ simplemp3s.mp3'

It seems like it only complains about files with abnormal chars in them. How would I go about escaping both the spaces and the abnormal characters? Something like URI::Escape, but with \'s instead of %'s.

So the sum up:

1) How would I go about escaping specific chars and spaces with a \ ?
2) Which characters in a UNIX file name must be escaped?
3) And finally, after everything is coded and functioning, how would I go about making it excuteable from /usr/bin (or wherever) so that i can just call the name of the program and have it run?

Thanks in advance!

In reply to Escaping characters in a file name by emilford

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.