perl – for循环的范围问题
发布时间:2020-12-15 23:22:37 所属栏目:大数据 来源:网络整理
导读:我是perl的新手,并且有一些范围或语法问题. 我正在尝试编写一段代码来读取文件中的行,将它们以特定的分隔符分成两部分,然后将每一半作为键值对存储在散列中.这是我的代码: #!/usr/bin/perluse strict;use warnings;my $filename = $ARGV[0];open(my $fh,':e
我是perl的新手,并且有一些范围或语法问题.
我正在尝试编写一段代码来读取文件中的行,将它们以特定的分隔符分成两部分,然后将每一半作为键值对存储在散列中.这是我的代码: #!/usr/bin/perl use strict; use warnings; my $filename = $ARGV[0]; open(my $fh,'<:encoding(UTF-8)',$filename) or die "Could not open file '$filename' $!"; my @config_pairs; while (my $row = <$fh>) { chomp ($row); push (@config_pairs,$row); } my %config_data; for my $pair (@config_pairs) { my ($key,$value) = split(/s*=s*/,$pair); %config_data{$key} = $value; } for my $k (%config_data) { print "$k is %config_data{$k}"; } 当我尝试运行时,我得到: $perl test_config_reader.pl --config.txt "my" variable %config_data masks earlier declaration in same scope at test_email_reader.pl line 22. syntax error at test_config_reader.pl line 19,near "%config_data{" Global symbol "$value" requires explicit package name at test_email_reader.pl line 19. Execution of test_config_reader.pl aborted due to compilation errors. 我不确定我做错了什么.很明显我不明白perl是如何工作的. 解决方法
我在运行脚本时收到不同的消息:
Can't modify key/value hash slice in list assignment at ./1.pl line 19,near "$value;" Global symbol "$key" requires explicit package name (did you forget to declare "my $key"?) at ./1.pl line 23. Execution of ./1.pl aborted due to compilation errors. 要引用单个哈希值,请将sigil从%更改为$(认为“复数”与“单数”): $config_data{$key} = $value; # ... print "$k is $config_data{$k}"; 另外,$k和$key是不同的变量(在此期间你似乎已经解决了这个问题). 要迭代哈希,请使用keys: for my $k (keys %config_data) { 否则,你也会循环遍历这些值. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Go 1.8rc3 源代码学习:cmd go
- [调整] Firemonkey iOS 原生 Edit 透明框, 改变框色
- golang slice
- php – Laravel:一般错误:1615准备好的声明需要重新准备
- 在Grails 2.0.0运行时生成的Clojure 1.2.1/1.3/1.4’代理失
- 如何在Perl中找到复制/粘贴(复制,克隆)代码?
- perl应用:SNP的提取(1):lastz
- golang(6):使用beego + ace admin 开发后台系统 CRUD,并
- Groovy探索之MOP 十五 方法名的动态性(1)
- perl – DBIx :: Class has_many连接列的子字符串