You can run the bash shell test program on the remote machine. It works just like the Perl test operators and ssh will return its return status.
unless (system('ssh', $host, 'test -s $file') == 0) {

You will need to be careful checking the return status of system because 0 is true and anything else is false. And -s checks if the file exists and has non-zero size.

Also, there is no print command; the shell equivalent is echo. You don't need to touch the file first; changing it will update the modtime. Do you really want to append to the file? It either doesn't exist or is zero size so you can use '>' to overwrite the file. I find that especially with ssh, it is better to use the array form of ssh because it makes explicit what is the remote command and you don't have to worry about quoting.

system('ssh', $host, "echo $product > $file");

Even better would be to use the power of the shell and dothe entire operation on the remote machine with a single ssh call.

system('ssh', $host, "if [ ! -s $file ]; then echo $product > $file; f +i");

In reply to Re: check if file on network is non-zero by iburrell
in thread check if file on network is non-zero by Anonymous Monk

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.