如何在perl中添加数字字符串
在数字字符串中添加值时,我遇到一些问题: 我的字符串看起来像如何在perl中添加数字字符串,perl,Perl,在数字字符串中添加值时,我遇到一些问题: 我的字符串看起来像02:03:05:07:04:06。所有的数字都必须是10,然后我要把这个数字加到第二个位置的数字上 到目前为止,我已经 #!/usr/bin/perl -w use strict; my $str='02:03:05:07:04:06'; my @arr=split(/:/,$str); my @new_arr=pop(@arr); my $rand_val=int(rand(9)); my $val=$new_arr[0]+$ran
02:03:05:07:04:06
。所有的数字都必须是10,然后我要把这个数字加到第二个位置的数字上
到目前为止,我已经
#!/usr/bin/perl -w
use strict;
my $str='02:03:05:07:04:06';
my @arr=split(/:/,$str);
my @new_arr=pop(@arr);
my $rand_val=int(rand(9));
my $val=$new_arr[0]+$rand_val;
if($val>=10)
{
I am unable to generate a logic here:(
}
请帮我解决这个问题
在添加数字后,我们必须加入字符串并将其打印:)我看到一个错误:您可以
my @new_arr=pop(@arr);
(...)
my $val=$new_arr[0]+$rand_val;
但是pop
只返回最后一个元素,而不是列表。my$str='02:03:05:07:04:06';
my $str = '02:03:05:07:04:06';
my @nums = split /:/, $str;
my $add = int(rand(9)) + 1;
my $overflow = 1;
for (1..@nums) {
if ($num[-$_] + $add < 10) {
$num[-$_] += $add;
$overflow = 0;
last;
}
}
die "Overflow" if $overflow;
$str = join ':', map sprintf('%02d', $_), @nums;
my@nums=split/:/,$str;
我的$add=int(兰特(9))+1;
我的$overflow=1;
对于(1..@nums){
如果($num[-$\]+$add<10){
$num[-$\uz]+=$add;
$overflow=0;
最后;
}
}
如果$Overflow,则为“Overflow”;
$str=join':',map sprintf('%02d',$),@nums;
我刚刚运行了这个程序,它就工作了。需要注意的是,字符串的最后一个数字越小,“if($val>=10)”有效的可能性就越小这并不能解决rand_val可能为0的问题,但我将把它作为一项任务留给您来解决。在遍历数组中的值直到数组中的随机值和当前最末值之和结束时,这将为您提供所需的内容
1 use strict;
2 my $str='02:03:05:07:04:06';
3 my @arr=split(/:/,$str);
4 my $rand_val=int(rand(9));
5 my $val;
6
7 foreach my $i (reverse @arr){
8 $val = $i + $rand_val;
9 next if ($val >= 10);
10 print "val: $val, rand_val: $rand_val, value_used: $i\n";
11 last if ($val < 10);
12 }
1使用严格;
2我的$str='02:03:05:07:04:06';
3 my@arr=拆分(/:/,$str);
4我的$rand_val=int(rand(9));
5我的$val;
6.
7美元兑我的$i(反向@arr){
8$val=$i+$rand_val;
如果($val>=10),则为9;
10打印“val:$val,rand_val:$rand_val,value_used:$i\n”;
11最后一个if($val<10);
12 }
您能给我一些建议,让我解决这个问题吗?10允许还是不允许?你说“必须是10岁”。如果您必须添加到倒数第二个位置,您是否添加相同的随机数?在这种情况下,最后一个位置是否保持不变?当倒数第二个位置也超过限制时会发生什么?您是否实现了“大整数”?你能把数字从第一个加到第二个吗?列,或者你的意思是“携带十位数”?看起来更像一个mac地址,但为什么你要将自己限制为10?假设你的随机数是9。所以你把它加到6,等于15,这是不允许的。所以你把它加在4上,也就是说13,也就是大于10。为什么可以?或者你的意思是只加1到4,基本上是溢出的?我假设你想继续尝试超过最后两个位置。如果您真的只想尝试最后两个位置,请使用(1..2)的
。