🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.perl
Article #52405

Odpowiednik funkcji source z basha

#52405
From: piecia aka dracorp
Date: Fri, 24 Feb 2012 11:50
41 lines
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-mail

Show 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