Perl programozás - Szoftverfejlesztés fórum

üzenetek

hozzászólások


tildy
(nagyúr)
Blog

Sziasztok!

Úgy láttam PERLlel kapcsolatos topic még nincs, gondoltam nyitok egyet.
de hogy ne csak úgy lógjona levegőben a dolog, rögtön lenne egy kérdésem is.
Asszociativ tomb esetén (hash) miért kell idézőjelek közé rakni az értékeket?


tildy
(nagyúr)
Blog

Ennyire senki?
PAckage készítésben segítség valaki?


Lortech
(addikt)

Jól értem, az a kérdés, hogy miért ilyen a szintaktikája? Mert .. :D
Vagy írj egy példát, hogy pontosan mi okozza a gondot. Package szintén. Valamit konyítok hozzá, de élesben nem használtam, csak azért tanultam régebben, hogy ehhez is hozzá tudjak szagolni.


tildy
(nagyúr)
Blog

Szeretnek egy programot írni, ami függvényeket hív meg.
A függvények legyenek mondjuk a Teszt.pm-ben, itt legyen mondjuk 3 fv. (lenyegtelen mit csinal jelen esetben)
Legyen egy teszt.pl , amelyben meghívjuk a Teszt.pm némely függvényét.
A kérdés: miknek kell lennie a Teszt.pmben, azon kívűl, hogy a függvényeknek?
Mi az az ISA?
Miket kell még beleírni a pm-be?

Perpill ennyi.


Lortech
(addikt)

pl:
A hívó:
$ cat elso.pl

use elso;

my $log_base = $elso::e;
print ''Log base: $log_base\n'';
my $radius = 10;
my $area =
elso::circle_area($radius);
print ''Area = $area\n'';


A modul :
$ cat elso.pm

use strict;

package elso;
our ($pi, $e);


$pi = 3.14159;
$e = 2.7182818;

sub circle_area
{
my $radius = shift;
return ($pi * $radius * $radius);
}
1;

A kimenet:
Log base: 2.7182818
Area = 314.159


elso.pl -t kell futtatni ezekután (perl elso.pl).
A példát innen ([link]
) loptam, Itt találsz egy használható leírást packagekről modulokról és a my, our jelentéséről.
Megmondom őszintén ISA-ról sokminden eszembe jutott, de perl kontextusban semmi. :U Nem használtam még, nem tudom, mire jó.


nukewar
(tag)

Látom kihalt a topic...
Akkor egy kérdés:
Hogyan kezelem a perl paraméterét?
pl.:

perl akármi.sh paraméter

Itt a paramétert akarom használni változó értékeként a programban.
A bash féle $1 úgy látom nem működik.
Tippek? :)


nukewar
(tag)

Na, közben kihámoztam egy netes forráskódból a lényeget.

$ARGV[0] -ként kell rá hivatkozni. Úgy látszik ez az ARGV valami kiemelt változó. Sőt, mi több egyenesen tömb.

perl akármi.sh 88

A programban pedig:

$result=$ARGV[0];

$result értéke 88 lesz.

Köszi a segítséget! :DDD


piadex2
(senior tag)

open(READ,"<audi.txt");

$counter = 0;

while( $line = <READ> ){
if($line =~ m/Horch/)
{
# {print "found Horch";
$counter++;
}else{
# print "there's no Horch\n";
}
}#while
if ($counter > 0)
{print "found Horch $counter time(s)";
}else{
print "there's no Horch\n";
}

close READ;
$_ = <STDIN>;

Ez a kód egy többsoros szövegben, amiben többször szerepel az, hogy Horch miért csak egyszer veszi észre?
Előre is kösz a segítséget.

piadex2


piadex2
(senior tag)

Mert az egész szöveg bekerül a $line-ba, így a ciklus csak egyszer fut le, aminek következtében a $counter csak eggyel növelődik.

piadex2


piadex2
(senior tag)

Sziasztok!

Hogyan lehet megoldani, hogy a program kiírja, hogy hányszor szerepel a Horch a szövegben. Van olyan is, hogy egy sorban többször is szerepel a Horch.
Előre is kösz.

piadex2


vipisti
(tag)
Blog

Pl. így:
$n = ($str =~ tr/Horch//);


piadex2
(senior tag)

Hello!

A kódot köszönöm, ment vele kapcsolatban kérdés privátban.
Újabb kérdés támadt:
van egy szöveg, amiben a "hide" szó többször előfordul. Hogyan lehet olyat csinálni, hogy megkeresem a hide szót, és - mivel ez egy html kód - megkeresem a hide szó előfordulása közvetlen előtti kacsacsőr mentes részt?
kacsacsőr mentes rész: nem kezdődik kacsacsőr és nem is végződik, pusztán a szöveg látható
Előre is kösz a segítséget.

piadex2


vipisti
(tag)
Blog

Kösz a figyelmeztetést, az előző kód nem azt csinálja, amit kértél. Nem ártott volna legalább kipróbálnom, bocs... :W
A helyes megoldás:

$n++ while ($str =~ /Horch/g);


vipisti
(tag)
Blog

<hide>ezt a szöveget akarod kiszedni?</hide>

A megoldás:
print "$1\n" while ($str =~ /\<hide\>([^<>]+)\<\/hide\>/g);

Lényeges része a mintának a [^<>]+, amivel tetszőleges karaktersorozatot engedsz meg, kivéve a kacsacsőröket.


piadex2
(senior tag)

Hello!

Először is kösz a segítséget.
Másodszor: pedig lenne egy olyan problémám, hogy a html kódból szeretném kiszedni a szöveget. Azt a részt, ami így : ...> szöveg szöveg ... szöveg <... található meg - vagyis kifordított kacsacsőrök között van.
Én már írtam rá kódot:
open(READER,"szoveg.htm");

while( $line = <READER> ){

if ($line =~ /\>([^<>]+)\</g){
$gyujtes = $line;
}

print "$gyujtes\n";
}

close READER;
$input=<STDIN>;

de nem úgy működik - nem tudom miért -, ahogy kellene.
Segítség ill. előre is kösz a segítséget.

piadex2


vipisti
(tag)
Blog

open(READER,"index.html");
@contents = <READER>;
close READER;

$contents = join '', @contents;

while ($contents =~ /\>([^<>]+)\</g)
{
print "$1\n";
}

Kiindulásnak használd a fentit. A kód tényleg csak a ><-ök közti szövegeket nézi így, de ne felejtsd el, h a html tagok egymásba ágyazhatók (ezért lesznek ennek az outputjában üres sorok, pl. </div></div> miatt).


vipisti
(tag)
Blog

Ja, még valami. A =~ operátor megcsinálja a mintaillesztést, de változatlanul hagyja a bal oldalán levő változót (amiben keresel). Ha használsz csoportsítást a mintában ()-kel, akkor a zárójeleken belüli találat a $1-ba kerül (több csoportnál rendre $2, $3 stb.).


piadex2
(senior tag)

Hello!

Kösz a segítséget!
Máshol azt ajánlották, hogy a perlben HTML parser-t használjak, mert különben nagyon elbonyolodok - mivel ez a válasz előbb jött ezt az utat kezdtem el bejárni.
Most viszont egy olyan kérdésem lenne, hogy az alábbi kód:
my ($one, $two) = 2;

print "$one plus $two\n";
print "$two\n";

miért nem azt adja ki, hogy:
2 plus 2
2
miért azt, hogy:
2 plus

-----vége------
Igazából az egyszerre történő értékadást próbáltam tesztelni, és ezért állok értetlenül az eredmény előtt.
Előre is kösz a segítséget!

piadex2


piadex2
(senior tag)

Hello!

Eredetileg my ($one, $two) = @_; volt. Kiderült, hogy a @_ egy lista. Innentől kezdve nyilvánvaló volt, hogy a "my ($one, $two) = 2;" helyett "my ($one, $two) = (1,2);" kell, és akkor minden érték látszódik.
Téma lezárva.

piadex2


vipisti
(tag)
Blog

A minták használatát, meg az alap perles dolgokat nem árt, ha először megtanulod/begyakorlod. Persze a CPAN tele van már megírt modulokkal, komplexebb problémák megoldása előtt nem árt böngészni.

üzenetek