On Aug 19, Steve said:
>#!/usr/bin/perl
You should turn on warnings and use strict.
#!/usr/bin/perl -w
use strict;
If you're using Perl 5.6+, you can remove the -w and replace it with
use warnings;
>print "What year were you born in?\n";
>$a = <STDIN>;
>chop($a);
chomp(my $birth = <STDIN>);
>$b = system "date +%Y";
First, system() executes a command, it doesn't return its output.
my $ok = system "date +%Y"; # prints the output of 'date +%Y'
# stores return status (0 == ok) in $ok
chomp(my $curr_year = `date +%Y`); # stores the output of 'date +%Y'
# in $curr_year, and removes newline
Second, there's no need to spawn a program to get the year!
my $curr_year = (localtime)[5] + 1900; # 6th element returned is year
# with 1900 subtracted from it
>$age = $b - $a
You're missing a semicolon here!
my $age = $curr_year - $birth;
>print "You are $age years old!\n";
That's ok.
>when I execute this I get the following:
>
>What year were you born in?
>1986 <~~~~~~I typed this then pushed enter
>2002
>You are -1986 years old!
You'll notice '2002' was printed to the screen. Why? Because system()
merely executes the command (which, in 'date's, case, prints some
information to the terminal). It RETURNS 0 (because 'date' executed
successfully), and 0 - 1986 = -1986.
--
Jeff "japhy" Pinyan [EMAIL PROTECTED] http://www.pobox.com/~japhy/
RPI Acacia brother #734 http://www.perlmonks.org/ http://www.cpan.org/
** Look for "Regular Expressions in Perl" published by Manning, in 2002 **
<stu> what does y/// stand for? <tenderpuss> why, yansliterate of course.
[ I'm looking for programming work. If you like my work, let me know. ]
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]