我有一个数组,并尝试将数组内容转换为带键和值的哈希.索引0是键,索引1是值,索引2是键,索引3是值等.
但它没有产生预期的结果.代码如下:
open (FILE, "message.xml") || die "Cannot open\n";
$var = <FILE>;
while ($var ne "")
{
chomp ($var);
@temp = split (/[\s\t]\s*/,$var);
push(@array,@temp);
$var = <FILE>;
}
$i = 0;
$num = @array;
while ($i < $num)
{
if (($array[$i] =~ /^\w+/i) || ($array[$i] =~ /\d+/))
{
# print "Matched\n";
# print "\t$array[$i]\n";
push (@new, $array[$i]);
}
$i ++;
}
print "@new\n";
use Tie::IxHash;
tie %hash, "Tie::IxHash";
%hash = map {split ' ', $_, 2} @new;
while ((my $k, …Run Code Online (Sandbox Code Playgroud) 我想根据用户输入动态创建数组.例如,如果用户给出输入作为3然后三个阵列应当具有名称创建@message1,@message2和@message3.
我怎么在Perl中做到这一点?
我有一个客户端-服务器 Perl 程序。我想将存储在数组中的消息发送到服务器。
服务器代码:
use IO::Socket::INET;
# Creating a a new socket
$socket=new IO::Socket::INET->new(LocalPort=>5000,Proto=>'udp');
print "\nUDPServer Waiting for client on port 5000";
while(1)
{
$socket->recv($recieved_data,1024);
$peer_address = $socket->peerhost();
$peer_port = $socket->peerport();
print "\n($peer_address , $peer_port) said : $recieved_data";
}
Run Code Online (Sandbox Code Playgroud)
客户端代码::
use IO::Socket::INET;
# Create a new socket
$socket=new IO::Socket::INET->new(PeerAddr=>'127.0.0.1',PeerPort=>5000,Proto=>'udp');
@message_array = ("message", 120, "sample");
$socket->send(@message_array);
Run Code Online (Sandbox Code Playgroud)
在服务器端我改变了,
$socket->recv(@recieved_data,1024);
Run Code Online (Sandbox Code Playgroud)
但我收到这样的错误,
UDPServer Waiting for client on port 5000usage: $sock->recv(BUF, LEN [, FLAGS]) at udp_server.pl line 17
Run Code Online (Sandbox Code Playgroud)
如何发送数组并将其打印或显示在服务器端。?
我有一段代码:
$s = "<sekar kapoor>";
($name) = $s =~ /<([\S\s]*)>/;
print "$name\n"; # Output is 'sekar kapoor'
Run Code Online (Sandbox Code Playgroud)
如果在第二行代码中删除了括号,则在变量中$name:
$name = $s =~ /<([\S\s]*)>/; # $name is now '1'
Run Code Online (Sandbox Code Playgroud)
我不明白为什么它会像这样.任何人都可以解释为什么会这样吗?
我正在使用pack函数将列表的内容发送到套接字.代码如下.
$message_array = pack ("(A*)*", @ul_dcch_message);
Run Code Online (Sandbox Code Playgroud)
列表内容是
@ul_dcch_message = (101101012411011, "emergency", 25, "simple");
Run Code Online (Sandbox Code Playgroud)
这段代码发送列表中包含的所有字符串和数字.但如果列表中的数字超过15位,我会得到这样的东西,
1.01101012411011e+16emergency25simple
Run Code Online (Sandbox Code Playgroud)
我的要求是,我想"打包"数字和字符串,数字将超过15位或更多.
有什么办法吗?有没有其他模板可以做到这一点?
任何帮助表示赞赏.
我在我的Linux机器上安装了一些Perl模块.如果我输入perldoc perllocal它显示我的机器中安装的Perl模块列表,但现在我不需要那些Perl模块,所以我想删除它们.
有谁知道如何卸载或删除Linux中安装的那些模块(debian 2.6.26)?
我有一个像这样的Perl代码(模式匹配),
$var = "<AT>this is an at command</AT>";
if ($var =~ /<AT>([\s\w]*)<\/AT>/i)
{
print "Matched in AT command\n";
print "$var\n\n";
}
Run Code Online (Sandbox Code Playgroud)
如果标签之间的内容没有连字符,它工作正常.如果在像这样的标签之间出现的字符串之间插入连字符,则无效<AT>this is an at-command</AT>.
即使连字符也被插入,任何人都可以修复此正则表达式吗?
帮帮我吧
塞特希
编辑::
大家好,
我有一个像这样的XML文件,
<message>
<c1>
<rrcConnectionSetupComplete>
<rrc-TransactionIdentifier>2</rrc-TransactionIdentifier>
<criticalExtensions>
<c1>
<rrcConnectionSetupComplete-r8>
<selectedPLMN-Identity> 1 </selectedPLMN-Identity>
<dedicatedInfoNAS> 07410109014290112345671000028020000f0 </dedicatedInfoNAS>
</rrcConnectionSetupComplete-r8>
</c1>
</criticalExtensions>
</rrcConnectionSetupComplete>
</c1>
</message>
Run Code Online (Sandbox Code Playgroud)
我使用像这样的Perl代码来访问xml文件中的数据(我应该坚持这种访问格式)
#!/usr/bin/perl
use strict;
use XML::Simple;
my $xml = new XML::Simple;
my $data = $xml->XMLin("uL-DCCH-Message.xml");
my $rrc_trans_identifier = $data->{'c1'}->{'rrcConnectionSetupComplete'}->{'rrc-TransactionIdentifier'};
print "rrc_trans_id :: $rrc_trans_identifier\n";
my $selected_plmn_id = $data->{c1}->{rrcConnectionSetupComplete}->{criticalExtensions}->{c1}->{'rrcConnectionSetupComplete-r8'}->{'selectedPLMN-Identity'};
print "plmn identity :: $selected_plmn_id\n";
my $rrc_dedicated_info_nas = $data->{c1}->{rrcConnectionSetupComplete}->{criticalExtensions}->{c1}->{'rrcConnectionSetupComplete-r8'}->{dedicatedInfoNAS};
print "dedicated info nas :: $rrc_dedicated_info_nas\n";
Run Code Online (Sandbox Code Playgroud)
产生的输出是,
rrc_trans_id :: 2
plmn identity :: 1
dedicated info nas :: 07410109014290112345671000028020000f0
Run Code Online (Sandbox Code Playgroud)
使用XML :: Simple的Perl代码适用于较小的XML文件(如上面的输出所示). …
我有一个像这样的字符串<name>,我想切断<>并取出 name并将其放入变量中.
如何使用perl"拆分"功能?
我有一段这样的代码(Perl文件):
print "9 + 16 = ", add(9, 16), "\n";
print "9 - 16 = ", subtract(9, 16), "\n";
Run Code Online (Sandbox Code Playgroud)
C代码也是,
#include<stdio.h>
main ()
{
int x = 9;
int y = 16;
printf(" add() is %d\n", add(x,y));
printf(" sub() is %d\n", subtract(x,y));
// return 0;
}
int add(int x, int y)
{
return x + y;
}
int subtract(int x, int y)
{
return x - y;
}
Run Code Online (Sandbox Code Playgroud)
如何使用perl运行此C代码Inline::C?我尝试过,但我并没有完全得到.