Avatar billede kernelx Juniormester
21. januar 2005 - 10:07 Der er 8 kommentarer og
1 løsning

string til integer

Hi,
---------------------------------
$string = "1970";
my @gmtTime = qw(0 0 0 1 0 $string);
$time_gm = timegm(@gmtTime);

print "gmt: $time_gm\n";
---------------------------------

den printer ikke 0, som den burde. Og det er pga. at jeg har sættet 1970 som string. men det bliver jeg altså nødt til, fordi jeg får 1970 som string ud af et filnavn.

nogen som ved, hvordan man kan løse problemet?
Avatar billede mfalck Praktikant
21. januar 2005 - 10:51 #1
jeg tror ikke det er fordi det er en streng det går galt:

use strict;
use Time::Local;

my $test = 0;
my $string = "1970";

$test += $string;
my @gmtTime = qw(0 0 0 1 0 $test);
my $time_gm = timegm(@gmtTime);

print "gmt: $time_gm\n";
print "$test\n";
exit 0;

giver:

gmt: 946684800
1970
Avatar billede mfalck Praktikant
21. januar 2005 - 10:53 #2
use strict;
use Time::Local;

my $test = 0;
my $string = "1970";

$test += $string;
my @gmtTime = qw(0 0 0 1 0 $test);
my $time_gm = timegm(@gmtTime);

print "gmt: $time_gm\n";
print "$test\n";

my $local_time = localtime($time_gm);
print "$local_time\n";
exit 0;

giver:
gmt: 946684800
1970
Sat Jan  1 01:00:00 2000
Avatar billede mfalck Praktikant
21. januar 2005 - 11:00 #3
jeg tror at fejlen ligger i my @gmtTime = qw(0 0 0 1 0 $test);

måske skal du bruge my @gmtTime = qq(0 0 0 1 0 $test);
Avatar billede mfalck Praktikant
21. januar 2005 - 11:01 #4
use strict;
use Time::Local;

my $test = 0;
my $string = "1970";

$test += $string;
my @gmtTime = qw(0 0 0 1 0 $test);
my $time_gm = timegm(@gmtTime);

my ($sec,$min,$hour,$mday,$mon,$year) = @gmtTime;


print "gmt: $time_gm\n";

print "$sec,$min,$hour,$mday,$mon,$year\n";
exit 0;


giver:
gmt: 946684800
0,0,0,1,0,$test
Avatar billede kernelx Juniormester
21. januar 2005 - 11:01 #5
mhhh ...
så læser perl det, som står i paranteserne måske som en string? ... og så er

sub
{
    $string = $_[0];

}
Avatar billede mfalck Praktikant
21. januar 2005 - 11:06 #6
jeps - den tager ikke værdien af variablen men variablen-navnet
Avatar billede mfalck Praktikant
21. januar 2005 - 11:07 #7
use strict;
use Time::Local;

my $test = 0;
my $string = "1970";

$test += $string;
my @gmtTime = (0, 0, 0, 1, 0, $test);
my $time_gm = timegm(@gmtTime);

my ($sec,$min,$hour,$mday,$mon,$year) = @gmtTime;
my $time2 = timegm($sec,$min,$hour,$mday,$mon,$year);

print "gmt: $time_gm\n";
print "gmt : $time2\n";
print "$sec,$min,$hour,$mday,$mon,$year\n";
exit 0;

giver:
Hit ENTER or type command to continue
gmt: 0
gmt : 0
0,0,0,1,0,1970
Avatar billede kernelx Juniormester
21. januar 2005 - 11:10 #8
#!/usr/bin/perl
use Time::Local;

$string = "1970";

$gmtTime [0] = 0;
$gmtTime [1] = 0;
$gmtTime [2] = 0;
$gmtTime [3] = 1;
$gmtTime [4] = 0;
$gmtTime [5] = $string;

#my @gmtTime = qw(0 0 0 1 0 $string);
$time_gm = timegm(@gmtTime);

print "gmt: $time_gm\n";
Avatar billede mfalck Praktikant
21. januar 2005 - 11:20 #9
ja - jeg brugte en implicit array i mit eksempel ...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester