I currently use a PHP (it's what I know) script to dig through specified directories for certain file types (mkv and avi) and feeds those files found to HandBrakeCLI to compress and convert them to an m4v file. I'm trying to change this from a PHP script to a perl script and I'm having a couple problems.

First problem is my directories and files have spaces in them. So the input file to HandBrake is fine, but the output stops at the first space.

Second problem, I need to change these files from .avi or .mkv to .m4v. If there was a way to strip off the extension and use just the base name for my output file, then I could append .m4v on to the end, that would be great (this is what I do with the PHP script).

Below is what I've written on my own so far, if there is a better way to do any of this, feel free to poke fun at me but please correct me, I'm trying to learn perl and get away from my nasty habit of relying on PHP and bash for my scripting needs.

#!/usr/bin/env perl use File::Find::Rule; use Data::Dumper; my $handbrake = '/usr/local/bin/HandBrakeCLI'; my $preset = 'AppleTV'; my $itunes = '/Volumes/Media/iTunes/iTunes Media/Automatically Add to +iTunes/'; my $tvtag = '/usr/local/bin/tvtag-sickbeard.pl'; my @files = find( file => name => [qw/ *.mkv *.avi / ], in => @ARGV ); $list = join("\n",@files," "); print "\nFound the following files to convert:\n\n$list\n"; foreach $file (@files) { print $file . "\n"; system "$handbrake -i '$file' -o $file\.m4v --preset=$preset"; }

In reply to Variables with spaces and changing file extensions by calebcall

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.