我想在Perl中将日期/时间GMT 0转换为GMT -6.
例如,DHCP服务器租约时间采用以下格式:
2010/02/18 23:48:37
我正在尝试将该时间转换为Localtime区域(GMT -6),但需要它来兑现夏令时.
下面的脚本可能有点矫枉过正,但我不知道如何从这里开始.(任何建议都很棒).
my $TIMESTART;
$TIMESTART = "2010/02/18 23:48:37";
$TIMESTART =~ s/\//-/g;
use DateTime;
use DateTime::TimeZone;
use DateTime::Format::MySQL;
my $dt = DateTime::Format::MySQL->parse_datetime($TIMESTART);
my $tz = DateTime::TimeZone->new( name => 'America/Chicago' );
print $tz->offset_for_datetime($dt) . "\n";
Run Code Online (Sandbox Code Playgroud)
它将输出以下行:
2010-02-18T23:48:37
-21600
我需要能够在日期中添加-21600以获得GMT -6的本地时区,但我不知道如何解决这个问题.
我在perl遇到一个奇怪的问题,我似乎无法找到答案.
我有一个小脚本,将解析来自外部的数据(无论是文件,网站等).解析数据后,它会将其保存为CSV文件.但是,问题是当我写文件或打印来筛选数据时,它似乎是截断字符串的开头.我正在使用严格和警告,我没有看到任何错误.
这是一个例子:
print "Name: " . $name . "\n";
print "Type: " . $type. "\n";
print "Price: " . $price . "\n";
print "Count: " . $count . "\n";
Run Code Online (Sandbox Code Playgroud)
它将返回以下内容:
John
Blue
7.99
5
Run Code Online (Sandbox Code Playgroud)
如果我尝试这样做:
print "$name,$type,$price,$count\n";
Run Code Online (Sandbox Code Playgroud)
我得到以下结果:
,7.99,5
Run Code Online (Sandbox Code Playgroud)
我尝试了以下内容以查看问题的开始位置并获取以下内容:
print "$name\n";
print "$name,$type\n";
print "$name,$type,$price\n";
print "$name,$type,$price,$count\n";
Run Code Online (Sandbox Code Playgroud)
结果:
John
John,Blue
,7.99
,7.99,5
Run Code Online (Sandbox Code Playgroud)
我还在学习perl,但似乎无法找出(可能由于缺乏知识)造成这种情况的原因.我尝试调试脚本,但我没有看到价格变量中的任何特殊字符会导致这种情况.
我试图在linux盒子上找到一个IP地址列表.目前我的设置是CentOS机器,每个VLAN都有几个用于eth0的子接口.我正在编写一个脚本,以查看每个VLAN IP地址是否与某些IP地址(每个网络的不同IP地址)连接.
例如:
eth0的IP为10.0.0.2 netmask 255.255.255.128
eth0.2的IP为10.0.130,网络掩码为255.255.255.128
eth0.3的IP为10.0.1.2 netmask 255.255.255.128
每个接口当前通过配置文件设置为静态IP地址.但是,我想将它从静态更改为DHCP并获得相同的IP地址.如果我这样做,它将破坏脚本的这一部分:
@devarray = `cat /etc/sysconfig/network-scripts/ifcfg-eth0* | grep IPADDR=10 -B 10 | grep -v "#" | grep IPADDR`;
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来确定可用的IP地址.我需要收集的只是IP地址而不是设备名称.
我正在编写一个将在.NET应用程序中使用的查询,因此我希望SQL Server 2008为我做大部分处理,而不是运行应用程序的客户端PC.
我试图从具有索引值的单个表中获取数据,基于该索引值,我希望该项放置在特定列中.
这是一个例子:
表MAS:
MA SN Mindex
B275 7A1515 1
B276 7A1515 2
E530 7A1515 3
B291 7A1519 1
B292 7A1519 2
E535 7A1519 3
B301 7A2515 1
B302 7A2515 2
B331 7A2519 1
B332 7A2519 2
Run Code Online (Sandbox Code Playgroud)
这是我想要的输出:
SN mi1 mi2 mi3
7A1515 B275 B276 E530
7A1519 B291 B292 E535
7A2515 B301 B302 null
7A2519 B331 B332 null
Run Code Online (Sandbox Code Playgroud)
我尝试执行以下查询,它适用于具有3个索引的项目,但如果只有两个,则使用随机数据填充它.
select mas1.SN, mas1.MA as mi1,mas2.MA as mi2, mas3.MA as mi3
from MAS ma1, MAS ma2, MAS ma3
where mas1.SN …Run Code Online (Sandbox Code Playgroud) 这可能是我的一个简单的疏忽(或者比我的技能更先进的东西).我试图通过读取文件的输入动态填充二维关联数组.
my @data;
while (<FILE>) {
chomp;
my $ID,$COUNT;
print "READ: " . $_ . "\n"; #Debug 1
($ID,$COUNT,undef,undef,undef) = split /\,/;
print "DATA: " . $ID . "," . $COUNT . "\n"; # Debug 2
$data{$ID}{"count"} = $COUNT;
#push @{$data{$ID}{"count"}}, $COUNT;
print $data{$ID}{"count"} . "\n"; # Debug 3
}
Run Code Online (Sandbox Code Playgroud)
第一次打印(Debug 1)将打印类似des313,3 ,,,的行.
第二次打印(Debug 2)将打印一行DATA:des313,3
第三个打印(Debug 3)将打印一个空行.
这个问题似乎与我试图将数据插入关联数组的方式有关.我已尝试直接插入和推送方法没有结果.我用PHP完成了这个,但我想我在Perl中忽略了这一点.我确实看过HASHES HASHES部分中的perldoc perldsc页面但是我没有看到它谈论动态生成它们.任何建议都会很棒!