Perl programozás - Szoftverfejlesztés fórum

üzenetek

hozzászólások


piadex2
(senior tag)

Hello megint!

Van egy file-om: file, amit hiába próbálok a HTML Parserrel feldolgoztatni pl úgy, hogy a HTML kódot egy másik file-ba másoltatom, mindössze egy üres file-t kapok végeredményül. Mit csinálok rosszul? (ha egyszerűbb html file-lal próbálkozom, akkor nincs gond)
Előre is kösz a segítséget.

piadex2

vipisti: amúgy átnéztem (úgy ahogy) a reguláris kifejezéseket, a file műveleteket, meg még néhány alapot - elméletileg elégnek kell lennie ezeknek


piadex2
(senior tag)

Hello!

Azt hittem, hogy valami nagy probléma van, amiről nem tudok, de kiderült, hogy a feldolgozandó file nevét rosszul ütöttem be ezért nem történt semmi.
Elnézést a fórum terheléséért.

piadex2


piadex2
(senior tag)

Sziaszok!

Ha van egy kódom, ami megkeresi az összes w-vel és nagy w-vel kezdődő szót, akkor hogyan kell módosítani ezt a programot ahhoz, hogy a megtalált szavakat kiírja a képernyőre?
Előre is kösz a választ:

piadex2


furu818
(csendes tag)

Hali!

Nem tudja valaki véletlenül, hogy egy helyi hálózatban lévő géphez hogyan tudok hozzáférni? Csak a könyvtár struktúráját akarnám bejárni, és pár dolgot kimásolni.
A gép a hálózaton simán "\\gepnev\akarmi" formában érhető el és tartozik hozzá külön jelszó és felhasználónév.
Ha esetleg valaki tudja, hogy hogyan kell elérni sima open függvénnyel, vagy valamilyen modullal az kérem írjon!

Köszi


!wannabe
(tag)

# na élesszük fel

Sziasztok!

Írnék egy scriptet amely egy beolvasott listából (amelyben szerepel vezeteknev, keresztnev) kislistázni azokat amelyeknek a keresztneve paratlan hosszusagu. A megszokott ($_%2) stringekre nem működik csak számokra ha jól sejtem. Hogyan lehetne megvizsgálni, hogy egy string páros vagy páratlan hosszusagú-e?

Előre is köszi a válaszokat.


szilu84
(tag)

$string = "hello";
$hossz = length $string;

if ( $hossz % 2 eq 1 ) {
print "paratlan\n";
}
elsif ( $hossz % 2 eq 0 ) {
print "paros\n";
}

Ha még aktuális egyáltalán :DDD


!wannabe
(tag)

Szia,

Köszi a megoldást, persze ez mindig aktuális :)


buherton
(őstag)
Blog

Nem tegnap volt az utolsó hsz, de hát ha ide téved valaki.

Kérdésem: hogyan lehet shell szkriptet programozni perlben? Gondolok itt az install-tól, az ls-ig.

[ Szerkesztve ]


Jester01
(veterán)
Blog

Ezt a kérdést nem is értem :F
A shell scriptet a shell futtatja. A perl scriptet meg a perl. Fából vaskarika?


buherton
(őstag)
Blog

Értem, bocsi a buta kérdésért. Akkor a shell-es dolgokat abban kell írni :O . Fordító mindenre érzékeny...


alapz@j
(tag)
Blog

Lehet hogy rosszul értem, de arra vagy kíváncsi, hogy hogyan lehet Perl programból shell utasításokat kiadni? Mert erre vannak a system(parancs) és az exec(parancs) utasítások, a system bevárja az eredményt, az exec pedig csak végrehajt. Ha az eredménye is kell a folyamatnak, akkor backtick:

exec(PROGRAM);
$sikerultvagynem = system(PROGRAM);
$kimenet = `PROGRAM`;


buherton
(őstag)
Blog

Igen arra gondoltam :) . Köszi :R . Ki tudja mikor jön jól. Mert ebben talán egyszerűbb program telepítő csomagot összedobni mint shell szkriptben. Vagy éppen grub helyreállítót összedobni, nem kell mindent sort mindig leírni, stb...


Osiris
(őstag)

Sziasztok!

Van egy @array tömböm, aminek az elemei karakterláncok -> nevek: vezetéknév+keresztnév+harmadiknév+és így tovább. Ezt a tömböt szeretném rendezni keresztnév szerint, vagyis a az első szóköz utáni listalem szerint.
Mi erre a megoldás? :F


alapz@j
(tag)
Blog

Ezen az oldalon alul vannak példák az ilyen rendezésekre.


Mijo
(tag)

Gondolom már nem aktuális, de jól esett kitalálni a megoldást:

#!/usr/bin/perl

use strict;

my @input = (
'1.+Béla',
'Örök+Eutanázia+Roberta',
'Kiss+Miska+András',
'Aaa+Aaa',
);

sub def_k {
shift =~ m/\+([^+]+)/;
return $1 || "";
}

my @output =
#map { $_->{'o'}}
sort { $a->{'k'} cmp $b->{'k'} }
map +{ 'o'=>$_, 'k'=> def_k($_) }, @input;

foreach my $o (@output) {
#print join( "\n", @output );
print $o->{'k'}.' -- '.$o->{'o'}."\n";
}

Az alkalmazott ötlet a http://en.wikipedia.org/wiki/Schwartzian_transform. A két kommentelt sor a teszteléshez van, élesben az első map veszi ki az eredeti stringeket a hashekből.
Remélem valakinek még hasznos lesz!
Üdv: Mijo


alapz@j
(tag)
Blog

Félofftopic, de megjelent a Perl 5.14, benne teljes Unicode 6 támogatással, gyorsabb futás mellett kevesebb memórifogyasztással és sok más okossággal. Részletesebben pl. itt:
[link]

[ Szerkesztve ]


Peter789
(senior tag)
Blog

Sziasztok!

az alábbi kis linuxos perl kód módosítására szeretnék segítséget kérni:

#!/usr/bin/perl

$file = '/dev/ttyS1';
open(SER, $file);

while (TRUE)
{
$input = getc(SER);
print $input;
}

close(SER);

ez szép és jó, de csak soronként hajlandó fogadni a bejövő karakterláncokat - mindig vár egy ASC10 vagy 13-ast, akkor lép csak tovább a print-re

létezik karakter típusú változó, amivel mindig továbbmenne ? vagy van rá valami más megoldás ?

előre is köszönöm a válaszokat,
Péter


Mijo
(tag)

Szia!
Első tanács, használj objektumokat, pl. ezt:
http://search.cpan.org/~cook/Device-SerialPort-1.002/SerialPort.pm
Gondolom van még számos a CPAN-on, ami a soros portot kezeli.

A getc leírása szerint, ez a függvény nem alkalmas a karakterenkénti olvasásra, mert entert vár hozzá, ahogy írtad is.
Meg lehetne próbálni a különböző olvasó függvényeket: sysread, read,...

létezik karakter típusú változó, amivel mindig továbbmenne ?
Konkrétan karakter típus nincs. Skalár van, ami tárolhat egy vagy több karaktert (stringet), egész vagy tört számot (integer, float, ...), meg egyebeket (objektumok, referenciák,...), de ezek között nincs éles határ, mint C-ben.
A kérdésed abból a szempontból rossz, hogy nem a változóddal mondod meg a függvénynek, hogy mikor és mivel térjen vissza.

Üdv: Mijo


Osiris
(őstag)

Szasztok!

Van egy $sor változóban egy karakterláncom:

$sor = "Németország 276 DEU DE ISO 3166-2:DE"

Hogy tudom a $sor változó első 3db egymást követő számjegysorozatának az első indexét kideríteni?

Így szerettem volna, de nem jó:

$pos = (index ($sor, /\d\d\d/));

:F

üzenetek