Perl
帶有鍵和值的源文件,並在 perl 程式碼中使用它
我有一個這樣的文件保存為
/var/ldt/ldt.conf
:LDT_HWADDR='00:00:00:00:00:00' LDT_DISK='/dev/sda' LDT_OS_ID='24' LDT_VERBOSE=true RUN_UPDATES=true
我想以一種在我的 perl 程式碼中可以使用確切的鍵名並且能夠執行以下操作的方式來獲取它:
print $LDT_HWADDR; print $LDT_OS_ID; print $RUN_UPDATES;
期望的輸出是:
00:00:00:00:00:00 24 true
只需使用雜湊:
#!/usr/bin/perl -w use strict; open(my $fh, "<", "/var/ldt/ldt.conf") || die "Can't open file: $!\n"; my %vars; while(<$fh>){ ## remove trailing newlines chomp; ## Split the line on = my @F=split(/=/,$_,2); ## remove quotes $F[1]=~s/^['"]//; $F[1]=~s/['"]$//; ## Save the values in the hash $vars{$F[0]}=$F[1]; } print "LDT_HWADDR:$vars{LDT_HWADDR}\n"; print "LDT_OS_ID:$vars{LDT_OS_ID}\n"; print "RUN_UPDATES:$vars{RUN_UPDATES}\n";
輸出:
LDT_HWADDR:00:00:00:00:00:00 LDT_OS_ID:24 RUN_UPDATES:true
或者,使用
$$var
. 但是請注意,這樣的事情很少(如果有的話)是一個好主意,並且經常會導致並發症(例如,請參閱@Sobrique 在評論中提供的連結)。上面的方法更安全。#!/usr/bin/perl open(my $fh, "<", "/var/ldt/ldt.conf") || die "Can't open file: $!\n"; while(<$fh>){ ## remove trailing newlines chomp; ## Split the line on = my @F=split(/=/,$_,2); ## remove quotes $F[1]=~s/^['"]//; $F[1]=~s/['"]$//; ## Set the variables ${$F[0]}=$F[1]; } print "$LDT_HWADDR\n"; print "$LDT_OS_ID\n"; print "$RUN_UPDATES\n";