I assume you're trying to get the return value of your system command, "xmmsctrl print %T", and not simply the return value of your sub named ctrl(). After all, the return value of ctrl() is going to be the return value of your print command, which is pretty much always '1'. You might be looking for the backticks( `` ) operator (also spelled as qx//) instead of system.

The following snippet captures the output of xmmsctrl print %T and returns via ctrl() to $ctrl.

use strict; sub ctrl { my $rv = `xmmsctrl print %T`; return $rv; } my $ctrl = ctrl();

Backticks ( `` ) return the output of the command you're executing through the shell, whereas system returns the exit status of the command.


Dave


In reply to Re: pass subroutine value to scalar by davido
in thread pass subroutine value to scalar by sub_chick

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.