gpt4 book ai didi

linux - 如何将原始字符串转换为变量(变量 --> $变量)?

转载 作者:太空狗 更新时间:2023-10-29 11:25:45 32 4
gpt4 key购买 nike

如何将字符串转为变量(字符串变量--> $variable)?

或者用逗号分隔的变量列表然后转换为实际变量。

我有 2 个文件:

  • 列名文件
  • 行文件

我需要根据字符串匹配行文件中的整行,并根据列名文件命名每一行。

例子:

列名文件内容

name,age,gender

行文件内容

mar,44,m
rich,49,m
glenn,22,m

现在我有一个变量字符串 $who = 'glenn'

我将首先在 ROWS FILE 上匹配它。

然后我需要根据COLUMN NAMES FILE 使用实际变量命名其匹配的内容。

输出:

$name = 'glenn';
$age = 22;
$gender = 'm';

我需要一些动态变化的东西,通过仅更新内容文件自动创建所需的变量和内容。

最佳答案

您所要求的,并不是您想要的。由于许多原因,这是一个坏主意,但此处概述了它们:http://perl.plover.com/varvarname.html

你需要的是一个散列,特别是一个 slice .

它的工作原理有点像这样:

my @header = qw ( A B C );
my @values = qw ( X Y Z );
my %combined;
@combined{@header} = @values;
print Dumper \%combined;

给予:

$VAR1 = {
'C' => 'Z',
'A' => 'X',
'B' => 'Y'
};

(注意:哈希值是明确无序的,因此每次打印时都会得到一个随机序列。这是设计使然,因为无论如何都应该通过键访问它们)

因此您的数据:

#!/usr/bin/env perl
use strict;
use warnings 'all';

open ( my $cols, '<', 'cols_file.txt') or die $!;
chomp ( my @cols = split /,/, <$cols> ); #just reads first line.
close ( $cols );
open ( my $rows, '<', 'rows_file.txt' ) or die $!;
while ( <$rows> ) {
chomp;
my %this_row;
@this_row{@cols} = split /,/;
push ( @all_rows, \%this_row );
}
close ( $rows );

print Dumper \@all_rows;

然后您可以访问行中的各个元素,例如:

foreach my $row ( @all_rows ) {
print $row -> {name},"\n";
}

关于linux - 如何将原始字符串转换为变量(变量 --> $变量)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38587705/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com