PerlGtk.pl

  
Menu główne
use PerlMongers::Warszawa;
use PerlMongers::Krakow;
NG_gRadio
Perl Win32 i CMD
  przez wrares (93 odsłon)
Bardzo często korzystamy w systemie Win32 z programu cmd.exe. Jest to konsola tekstowa, w której wszystkie polecenia podawane są z klawiatury komputera. Mając w systemie Win32, zainstalowane środowisko ekosystemu Perla, chcielibyśmy od czasu do czasu, wykonując skrypt naszego ulubieńca, zlecić zadanie innej aplikacji.
Dziś przedstawimy przykład takiego rozwiązania, które pozwoli Nam prześledzić to zadania. A więc co potrzebujemy
Cytat:


1) System Win32

2) Zainstalowany ekosystem Perla

3) Zainstalowane moduły DBI, DBD-Xbase.

4) Przykładowe bazy danych, zgodne z standardem XBase używane przez (DBase, FoxBase, Clipper itp)

5) Dowolny edytor, preferowany przez piszącego



Skorzystamy także z programu dbfdump, celem wyświetlenie struktur baz w oknie cmd.

Aby przystąpić do opisu samego programu musimy mieć
Cytat:


1) Zainstalowny system Win32

2) Zainstalowany ekosystem Perla

3) Zainstalowane moduły DBI oraz DBD-XBase

4) Tworzymy na dysku lokalnym katalog c:\bazy

5) Kopiujemy do tego katalogu pliki baz danych XBase, z rozszerzeniem dbf

6) Kopiujemy do tego katalogu skrypt baza.pl, dostępna w Naszym portalu

7) Uruchamiamy skrypt w katalogu c:\bazy\ komendą perl baza.pl



Tak przebiega sposób instalacji całego przykładu. A teraz prezentujemy kod wraz z omówieniem

#!/usr/bin/perl

######################################
# Progrm pisany dla potrzeb portalu  #
# http://perlgtk.pl                  # 
# Programował wrares                 #
# 31/03/2010                         #
######################################


use warnings;
use strict;

use DBI;
use DBD::XBase;



W sposób jawny deklarujemy moduły, które używamy w naszej aplikacji


my $katalog = qq(C:\\bazy);

my @bazy = ();



Deklarujemy zmienne, wykorzystywane w Naszym programie

opendir(DIR, $katalog) or die
"Nie mozna otworzyć katalogu $katalog: $!";

while (defined ($katalog = readdir(DIR))) {
    
   if (grep {/\.dbf$/i} $katalog) {
        
       push @bazy,[$katalog];
    
    }   
}

close(DIR);


Używamy procedur Opendir oraz Readdir, które pozwalają otworzyć określony katalog, a następnie przeczytać jego zawartość. Następnym krokiem jest użycie procedury grep, o której już pisaliśmy na Naszym portalu, omawiając wyrażenia regularne. Procedura grep, pozwala na filtrowanie tylko plików z zakończeniem .dbf. W kolejnym kroku, nazwa pliku jest zapisywana do tablicy, jako odwołanie.

foreach my $i (@bazy) {

    my $nazwa = "@{$i}";

    system('perl C:\Perl\site\bin\dbfdump -i '.qq{$nazwa});
}


Ten fragment jest najważniejszy, gdyż tutaj wyświetlana jest cała informacja o plikach dbf, zawartych w katalogu c:\bazy . Na początku mamy pętlę, która przegląda tablicę z zapisanymi adresami, pod którymi znajdują się nazwy plików. W następnym kroku, wykorzystujemy procedurę system, która pozwoli Nam wywołać program zewnętrzny, zleci mu wykonanie i zakończy się kodem sukcesu.
Przeanalizujemy następujący kod programu
system('perl C:\Perl\site\bin\dbfdump -i '.qq{$nazwa});

Wykorzystujemy funkcję system z parametrami, które dzielimy na kilka części. Pierwszym jest wyraz perl, który uruchamia nasze środowisko wykonania. Jeśli go pominiecie, otrzymacie błąd. Drugim parametrem jest podana ścieżka do programu wraz z programem i wybraną opcją C:\Perl\site\bin\dbfdump -i . Element trzeci który wywołujemy poza nawiasem jest zmienna która musi być interpolowana, aby otrzymać jej zawartość w wierszu poleceń i ma ona postać qq{$nazwa}. Ważny jest tutaj łącznik w postaci kropki . który dodaje Naszą zmienną do całego wywołania w oknie shella. Skrypt dostępny jest w Naszym portalu na tej stronie....
Powrót
Szukaj w PerlGtk.pl
The Perl Job site
Szukaj kodu :