Article View: pl.comp.lang.perl
Article #52405Odpowiednik funkcji source z basha
From: piecia aka dracorp
Date: Fri, 24 Feb 2012 11:50
Date: Fri, 24 Feb 2012 11:50
41 lines
1866 bytes
1866 bytes
Witam
Jako że w perlu nie zadziała coś takiego:
#v+
`bash -c "source plik"`;
print $ENV{var};
#v-
napisałem funkcję która po części realizuje wczytywanie zmiennych z
plików do hasha:
#v+
my %env;
sub source_file { #{{{
my ($file) = @_;
open my ($fh), q{<}, $file
or croak "$!";
ENV:
while (<$fh>) {
chomp;
my ($key, $value);
unless ( ($key, $value) = m/\A\s*(\w+)\s*=\s*([^#]+)\z/xms ){
next ENV;
}
$value =~ s{\A"?([^"]+)"?\z}{$1}xms;
$env{$key} = $value;
}
return ;
}
#v-
Zmienne są wczytywane do hasha %env. Problem występuje gdy w pliku
zmienna przyjmie np. postać:
#v+
var=$pkgevr-$pkgrel
var=${pkgver}.${pkgrel}
#v-
I inne kombinacje. Gdzie zmienna może być objęta przez {} lub nie.
Pytanie jak się najlepiej do tego zabrać?
--
piecia aka dracorp
pisz na: piotr kropka rogoza at wp kropka eu
Technical Details
Message-ID:
<pan.2012.02.24.11.56.04@dracorp.one.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
From: piecia aka dracorp <imie.nazwisko@wp.eu>
Newsgroups: pl.comp.lang.perl
Subject: Odpowiednik funkcji source z basha
Date: Fri, 24 Feb 2012 11:50:48 +0000 (UTC)
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 41
Message-ID: <pan.2012.02.24.11.56.04@dracorp.one.pl>
NNTP-Posting-Host: 62.108.180.232
Mime-Version: 1.0
X-Trace: inews.gazeta.pl 1330084248 12600 62.108.180.232 (24 Feb 2012 11:50:48 GMT)
X-Complaints-To: usenet@agora.pl
NNTP-Posting-Date: Fri, 24 Feb 2012 11:50:48 +0000 (UTC)
X-User: dracorp
User-Agent: Pan/0.136 (I'm far too busy being delicious; GIT 4efcb48 git://git.gnome.org/pan2)
X-Face: &O(G<?G0x[)D}ri@2r:nnqjWG"C%v#'ES"T|m>Gaw3JWL>[XKRh^(75y8=DvLC1QXn9Vtc= !QWAS}|{A97ADU]x0*KE-Z>sKRlHMqyJ7c!=^wW,f#RXJ%e_@(U2YaNV10ucCf
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit