在@spl中使用未初始化的值替换s ///

如何解决在@spl中使用未初始化的值替换s ///

运行脚本时出现以下错误。

Use of uninitialized value in print at PreProcess.pl line 137.
Use of uninitialized value within @spl in substitution (s///) at PreProcess.pl line 137.

脚本中是否存在语法错误? (在Windows中运行-Strawberry 64最新版本)

my $Dat=2;
my $a = 7;
foreach  (@spl) {
    if ( $_ =~ $NameInstru ) {  
        print $spl[$Dat] =~ s/-/\./gr," 00:00; ",$spl[$a],"\n";    # data
        $Dat += 87;
        $a += 87;
    }
}

在数组内部,我拥有这种类型的数据

"U.S. DOLLAR INDEX - ICE FUTURES U.S."
150113
2015-01-13
098662
ICUS
01
098
  128104
   14111
   88637
     505
   13200
      50
     269
   43140
   34142
    1862
   37355
     482
     180
  110623
  126128
   17480
    1976
    1081
   -3699
    8571
    -120
     646
      50
     248
    1581
   -8006
     319
    2093
      31
     -30
    1039
    1063
      42
      18
  100.0
   11.0
   69.2
    0.4
   10.3
    0.0
    0.2
   33.7
   26.7
    1.5
   29.2
    0.4
    0.1
   86.4
   98.5
   13.6
    1.5
    215
      7
.
.
     16
.
.
     50
     16
      8
    116
      6
      4
    197
     34
    28.6
    85.1
    41.3
    91.3
    28.2
    85.1
    40.8
    91.2
"(U.S. DOLLAR INDEX X $1000)"
"098662"
"ICUS"
"098"
"F90"
"Combined"

"U.S. DOLLAR INDEX - ICE FUTURES U.S."
150106
2015-01-06
098662
ICUS
01
098
  127023
   17810
   80066
     625
   12554
       0
      21
   41559
   42148
    1544
   35262
     452
     210
  109585
  125065
   17438
    1958
   19675
     486
   23911
      49
    2717
       0
     -73
    9262
   -5037
      30
    5873
     270
      95
   18439
   19245
    1237
     431
  100.0
   14.0
   63.0
    0.5
    9.9
    0.0
    0.0
   32.7
   33.2
    1.2
   27.8
    0.4
    0.2
   86.3
   98.5
   13.7
    1.5
    202
      7
.
.
     16
      0
.
     48
     16
      9
    105
      6
      4
    185
     34
    29.3
    83.2
    43.2
    90.6
    28.9
    83.2
    42.8
    90.5
"(U.S. DOLLAR INDEX X $1000)"
"098662"
"ICUS"
"098"
"F90"
"Combined"

解决方法

您可能试图将每个大小为87行的数据集文件加载到一个数组中,然后在尝试从最后一个数组索引之外读取数据时,在数据末尾出现错误。

您可能可以通过遍历数组索引而不是数组值来解决它,例如

try

RespJson := IdHTTP1.Post
  ('http://192.168.0.6:1000/allcalculate.php',data);
finally
data.Free;
end;
delete(RespJson,length(RespJson),1);
delete(RespJson,1,1);
RespJson := StripChars(RespJson,['"']);
arrresp:= splitstring(RespJson,',');
arrresp:=splitstring(arrresp[30],':');
advedit48.Text:=arrresp[1];

虽然这可能会解决您的问题,但尝试找到一种正确的方法来解析文件可能会更好。

如果输入文件中的记录用空白行分隔,则可以尝试通过将input record separator更改为my $Dat = 2; my $a = 7; my $set_size = 87; for (my $n = 0; $n + $a < @spl; $n += $set_size) { if ( $spl[$n] =~ $NameInstru ) { print $spl[$n + $Dat] =~ s/-/\./gr," 00:00; ",$spl[$n + $a],"\n"; # data } } ""一次读取整个记录。然后,您可以在换行符"\n\n"上拆分结果数组中的每个元素,并获得完整的记录。例如:

\n
,

TLP迭代数组索引,每次增加87的解决方案很棒。

这是一种更复杂的解决方案,但不需要将整个文件加载到内存中。

my $lines_per_row = 87;

my @row;
while (<>) {
   chomp;
   push @row,$_;
   if (@row == $lines_per_row) {
      my ($instru,$dat,$a) = @row[0,2,7];
      if ($instru =~ $NameInstru) {
         print $dat =~ s/-/\./gr," 00:00; $a\n";
      }

      @row = ();
   }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-