Strona 1 z 1

[SOLVED][Perl] Parsowanie pliku

: 27 sie 2009, 20:51
autor: witek23
Witam:)

Zrobiłem skrypt .cgi który używa do obliczeń octave. Problem jest taki, iż po podaniu do skryptu wektora np: A =[3 4 4]. otrzymuje wynik w postaci:
GNU Octave, version 3.0.1 Copyright (C) 2008 John W. Eaton and others. This is free software; see the source code for copying conditions. There is ABSOLUTELY NO WARRANTY; not even for MERCHANTIBILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, type `warranty'. Octave was configured for "i486-pc-linux-gnu". Additional information about Octave is available at http://www.octave.org. Please contribute if you find this software useful. For more information, visit http://www.octave.org/help-wanted.html Report bugs to (but first, please read http://www.octave.org/bugs.html to learn how to write a helpful report). For information about changes from previous versions, type `news'. A = 3 4 4
Chciałbym żeby tekst "powitalny" octave był w jednej zmiennej, a wektor A w innej. W moim skrypcie .cgi zawarłem taki kod służący do parsowania, niestety nie działa:

Kod: Zaznacz cały

@tekst = system("octave plik");
foreach $tekst (@tekst)
{
($witaj, $wartosc) = split(/`news'./, $tekst);
}

print "$witaj";
print "$wartosc";


Odp: [Perl] Parsowanie pliku

: 27 sie 2009, 22:47
autor: el.pescado
http://www.network-theory.co.uk/docs/oc ... ve_20.html
--silent
--quiet
-q
Don't print the usual greeting and version message at startup.

EDIT:
A co do perla, funkcja system zwraca kod zakończenia programu, nic więc dziwnego, że nie można znaleźć tam żadnych wektorów;) Do przechwytywania wyjścia programu użyj operatora ` albo funkcji open.

Ponadto, w wyrażeniach regularnych, kropka (.) ma specjalne znaczenie, więc jeżeli chce się dopasować dosłowny znak kropki, należy go poprzedzić znakiem odwrotnego ukośnika (\).

Odp: [Perl] Parsowanie pliku

: 28 sie 2009, 10:14
autor: witek23
Dzięki el.pescado, jak wrócę z pracy to sprawdzę ten sposób.

Odp: [Perl] Parsowanie pliku

: 28 sie 2009, 15:10
autor: leon1313
Po krótce:
Jeżeli zamierzasz poddac parsowaniu w perlu jakiekolwiek dane pochodzące z programów zewnętrznych, rób to za pomocą potoku i funkcji open:

Kod: Zaznacz cały

#!/usr/bin/perl
use strict;  #  wymaga deklarowania zmiennych
my $progs_data=q(cat /etc/passwd |);
my @one_line_array; # tu potrzymamy posztkowae dane

open(LINE, $progs_data);
while(<LINE>){
 chomp(); #usunięcie ewentualnych znaków końca lini
 @one_line_array=split(/:/, $_);
 print "User: $one_line_array[0] , UID $one_line_array[2]  \n";
}

Odp: [SOLVED][Perl] Parsowanie pliku

: 29 sie 2009, 18:01
autor: witek23
Dzięki wszystkim za pomoc problem rozwiązałem bez parsowania sposobem el.pescado.

Pozdrawiam!