Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

Re: How do I remove newline character from a number got from unix command

by marinersk (Chaplain)
on Sep 04, 2013 at 12:14 UTC ( #1052312=note: print w/ replies, xml ) Need Help??


in reply to How do I remove newline character from a number got from unix command

Updated: (Added notes, original solution the same)
Updated: (Expanded solution due to peer pressure) :-)

Don't have a Linux system up but presume chomp would do it:

$year=`date +%Y`; chomp $year; printf "$year";

I see choroba was faster on the post than I was, and also gave a more complete answer.

Okay, fine, I'll give in. Everyone is mentioning localtime, but my old eyes don't see the commensurate adjustment warning:

# Humanize the time my $nowsse = time; my ($nowsec,$nowmin,$nowhou,$nowdom,$nowmon,$nowyea,$nowdow,$nowdo +y,$nowdst) = localtime($nowsse); $nowyea += 1900; $nowmon++;

With some further explanations of my TLAs:

  • $nowsse: Seconds since Epoch
  • $nowdom: Day of Month
  • $nowdow: Day of Week
  • $nowdoy: Day of Year
  • $nowdst: Daylight Savings Time in effect?

Some additional thoughts:

  • Any time you shell out to run an OS command you should really examine what you get back. Each OS behaves a little bit differently and you'll want to get a feel for what you get back. You may need to massage it for storage or modification (such as chomping off the newline in your example).
  • Use of Perl native features is going to be more portable than a homespun OS interface; while not always the right answer, in my opinion based on a few decades of experience this should be a consideration -- even for one-off work which might later be used as a template for something less one-off-ish.
  • Use of a published module (a la CPAN, etc.) is likely to be more portable than an OS-specific hack, but as always caveat emptor, so test its functionality and results before releasing it into the wild.

The original question was specifically about the newline on the OS response, so that's what my post covered. It was irresponsible of me to not mention, as so many other Monks have, the particular function you appeared to be attempting to perform was available via both native and module functionality.

But the other Monks did cover that, rather thoroughly. I love Perlmonks. :-)


Comment on Re: How do I remove newline character from a number got from unix command
Select or Download Code
Re^2: How do I remove newline character from a number got from unix command
by tousifp (Novice) on Sep 04, 2013 at 12:20 UTC
    I was using chomp($year) and so not returning expected result. Thanks

      I was using chomp($year) and so not returning expected result. Thanks

      So...

      The documentation for chomp tells you how chomp works and what it returns.
      It is the contents of the variable itself that you should verify.

      Update: to be concise, I added "the contents of" to the line above.

      Cheers, Sören

      Créateur des bugs mobiles - let loose once, run everywhere.
      (hooked on the Perl Programming language)

        What did it return? - 1

        What did you expect? - 2013

        How did you verify the result? - by printing

        How did you fail to read the documentation? - beginner(sure for perl)

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1052312]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (18)
As of 2014-12-18 14:29 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (55 votes), past polls