Avatar billede funnysite_dk Nybegynder
29. juli 2000 - 15:44 Der er 41 kommentarer og
1 løsning

Deling af variabler

Jeg vil bare gerne vide hvordan man deler en vaiabel op. F.eks. \"viggo\" op til \"v\" \"i\" \"g\" \"g\" \"o\" så de får deres en variabel som delt{1} osv...
Jeg vil også gerne vide hvordan man får et bestemt tegn byttet ud med et andet som f.eks. hvis jeg vil ha alle å\'er til at blive to a\'er så \"måne\" bliver til \"maane\".
Jeg håber i kan hjælpe mig.
Avatar billede funnysite_dk Nybegynder
29. juli 2000 - 15:45 #1
Det haster!!!!
Avatar billede erikjacobsen Ekspert
29. juli 2000 - 16:04 #2
En af tingene:

  $kurt = \"viggo\";
 
  echo $kurt[0].\" \".$kurt[1].\" \".$kurt[2].\" \".$kurt[3].\" \".$kurt[4];

Avatar billede erikjacobsen Ekspert
29. juli 2000 - 16:06 #3
Og her er den anden

  $sol = \"måne\";

  $stjerne = str_replace(\"å\",\"aa\",$sol);

  echo $stjerne;
Avatar billede erikjacobsen Ekspert
29. juli 2000 - 16:06 #4
Hovsa, det var Perl - og ikke PHP..... Om igen Erik...
Avatar billede erikjacobsen Ekspert
29. juli 2000 - 16:13 #5
Og så igen i Perl ;-))

  $kurt = \"viggo\";
  @anna = split(//,$kurt);
  print $anna[0].\" \".$anna[1].\" \".$anna[2].\" \".$anna[3].\" \".$anna[4].\"\\n\";

  $sol = \"måne\";
  $sol =~ s/å/aa/g;
  print $sol.\"\\n\";
Avatar billede funnysite_dk Nybegynder
29. juli 2000 - 20:54 #6
Det virker ikke. Nu har jeg givet dig point så kan du godt lige hjælpe mig
Avatar billede erikjacobsen Ekspert
29. juli 2000 - 20:59 #7
Hvad virker ikke? Dette eksempel er kørt hos mig.
Avatar billede funnysite_dk Nybegynder
29. juli 2000 - 22:23 #8
Det eneste min cgi-fil indeholder er linierne

#!/usr/local/bin/perl

$sol = \"måne\";
$sol =~ s/å/aa/g;
print $sol.\"\\n\";

og der kommer en cgi-fejl.
Jeg har rimelig erfaring med cgi og bruger hypermart.net. Jeg ved ikke hvad der er galt.
Avatar billede erikjacobsen Ekspert
29. juli 2000 - 22:26 #9
Nå, nå, det skal OGSÅ virke som CGI... Jamen så skal du jo have en headerlinie med:

print \"Content-type: text/html\\n\\n\";

som det første! Jeg har jo bare kørt det som et Perl-program ;-)
Avatar billede funnysite_dk Nybegynder
29. juli 2000 - 22:49 #10
Nu virker det med måne men ikke hvis jeg f.eks. vil ha @ byttet ud med /@ og \" ud med /\"

Kan man virkelig få et perlprogram til at køre på computeren. Hvis ja ville jeg meget gerne høre hvor man kan downloade det.
Avatar billede erikjacobsen Ekspert
29. juli 2000 - 23:05 #11
Man downloader ActivePerl fra http://www.activestate.com/ActivePerl/ - det fylder ret
så meget.....et antal MB - husker det ikke.

Nej, lige @ er speciel for Perl, og / er jo dem vi omgiver de regulære
udtryk med. Sæt bare \\ foran:

$sol =~ s/\\@/\\/\\@/g;

og

$sol =~ s/\"/\\/\"/g;
Avatar billede funnysite_dk Nybegynder
29. juli 2000 - 23:09 #12
Jeg har downloadet filen fra www.activestate.com men den skriver min windows installer ikke er opdateret. Jeg har prøvet windows update. Hvad gjorde du?
Avatar billede erikjacobsen Ekspert
29. juli 2000 - 23:13 #13
Hmm, jeg tror da nok jeg hentede en ny opdatering fra Microsoft - på min gaaamle W95. På
min kones W98 var den ok.
Avatar billede funnysite_dk Nybegynder
29. juli 2000 - 23:17 #14
Jeg kan stadig ikke få det med @ og \" til at virke jeg ved ikke hvad der kan være galt. Den kommer ikke med nogen fejlmedeldning men den gemmer ikke det heller. Prøv at checke billederne på www.funnysite.dk og send et. Det er det det skal bruges til
Avatar billede erikjacobsen Ekspert
29. juli 2000 - 23:29 #15
Den med @ virker således (et @ i en streng skal skrives \\@. Der står altså: m@ne)

  $sol = \"m\\@ne\";
  $sol =~ s/\\@/\\/\\@/g;
  print $sol.\"\\n\";

Udskriver: m/@ne

Den med \" virker således (et \" i streng skal skrives \\\". Der står altså: m\"ne)

  $sol = \"m\\\"ne\";
  $sol =~ s/\"/\\/\"/g;
  print $sol.\"\\n\";

Udskriver: m/\"ne

Jeg har ikke lige prøvet din side....
Avatar billede funnysite_dk Nybegynder
29. juli 2000 - 23:42 #16
Okay. Jeg vil ikke bare ha den udskrevet men også gemt i en fil. Det virker ikke når jeg skriver til en fil bliver den lavet om til bare @ og ligeledes \" igen. Problemet er når den henter fra filen skal den @ og \" være med / foran.
Det kunne være man kunne undgå dette hvis du kendte tegnende for @ og \" jeg tror at \" er noget lignende &cout;
Avatar billede erikjacobsen Ekspert
29. juli 2000 - 23:48 #17
Hmm, hvis du skriver

  open (F,\">xxxyyy\");
  print F $sol.\"\\n\";
  close(F);

kommer de da med i filen, begge to. Men hvad der sker når du senere hælder det ind i
HTML, eller videre ind i Perl, skal jeg ikke lige kunne sige...
Avatar billede funnysite_dk Nybegynder
30. juli 2000 - 11:37 #18
Hvis du stadig har programmer active perl liggende så ville jeg blive meget glad hvis du gad at sende det til cs@funnysite.dk da jeg tror at jeg har downloadet en for ny udgave.
Avatar billede erikjacobsen Ekspert
30. juli 2000 - 12:13 #19
Min version hedder ActivePerl-5_6_0_613.msi - ca. 3.2 MB - jeg kan uploade den
til dig et sted, hvis du vil?
Avatar billede funnysite_dk Nybegynder
30. juli 2000 - 16:28 #20
Jeg ville meget gerne ha din version men hvorfor uploade den, jeg ville blive meget glad og gi dig 50 point hvis du sendte den til email adressen c-s@forum.dk
Avatar billede erikjacobsen Ekspert
30. juli 2000 - 17:09 #21
Det er nu ganske meget nemmere (for mig) om du henter den på
http://eksperten.i.hasselager.net/perl/ActivePerl-5_6_0_613.msi
og iøvrigt husker at fortælle om det er bedre end din nyere
version.
Avatar billede funnysite_dk Nybegynder
30. juli 2000 - 17:33 #22
Der kommer denne fejlmeddelse:

Denne installationspakke kunne ikke åbnes kontakt programforhandleren for at kontrollere, at dette er en gyldig windows-installationspakke.
Avatar billede erikjacobsen Ekspert
30. juli 2000 - 18:54 #23
Hey - det siger min kopi også ... s**t.

Hmm, det kunne være, at det var en dårlig download. Jeg har ikke andre på
denne PC. Jeg prøver formentlig i morgen på en anden.
Avatar billede erikjacobsen Ekspert
30. juli 2000 - 19:03 #24
For at sikre andre mod en overflødig download er ovennævnte link lige omdøbt fra
.msi til .msj - hvis du absolut vil prøve. Jeg arbejder lidt videre på sagen.
Avatar billede funnysite_dk Nybegynder
02. august 2000 - 23:37 #25
Jeg har nu fået det med perl-programmet til at virke. Du finder programmet på http://www.activestate.com/download/ActivePerl/Windows/5.6/ActivePerl-5.6.0.616-MSWin32-x86-multi-thread.msi og windows installer på http://www.activestate.com/download/contrib/Microsoft/9x/InstMsi.exe.

Men der stadig et problem, jeg aner ikke hvordan jeg skal bruge det, jeg prøvet at lave et simpelt pl.script og dobbeltklikke på det men med det samme det åbnes bliver det lukket igen.
Jeg når lige at skimte at den i stedet for at printe det som html printer det som ren tekst. Gider du lige sende mig et eksempel af en pl fil og nogle instruktioner hvordan jeg få det til at virke. V/H Carsten
Avatar billede funnysite_dk Nybegynder
02. august 2000 - 23:39 #26
Min email adresse er cs@funnysite.dk - Gør det så hurtigt du kan, please.
Avatar billede erikjacobsen Ekspert
03. august 2000 - 00:04 #27
Fint - jeg havde simpelthen ikke noget liggende.

Du skal ikke dobbeltklikke. Klik og den slags hører til de her nymodens ting, vi
sagtens kan undvære....

Start en DOS-prompt. Gå ned i det katalog, hvor din .pl-fil ligger, lad os sige den
hedder test.pl.

Skriv:

  perl test.pl

Hvis den siger \"Command not found\", mangler du at sætte den i DOS PATH-variablen,
men det bliver vist gjort automatisk.
Avatar billede funnysite_dk Nybegynder
03. august 2000 - 00:10 #28
OK, det har jeg fattet.
Men hvad hvis jeg vil ha den til at vise html.
Det må da kunne la sig gøre når det kan på nettet. En anden jeg har spurgt om det samme siger at den ligge sig i patchen eller noget lignende. Kan jeg via patchen få adgang til perl/html/cgi.
Det kan godt være jeg bare pludre men jeg vil bare ha lortet til at virke. Please hjælp mig.
Avatar billede erikjacobsen Ekspert
03. august 2000 - 00:21 #29
Ja, ja, små slag. Hvis jeg har et perl-program, der skal generere html så skriver

  perl test.pl > test.htm

og kigger på test.htm i en browser. Eller også kalder jeg filen via min lokale webserver
Avatar billede funnysite_dk Nybegynder
03. august 2000 - 11:33 #30
Det fatter jeg ikke, hvad mener du med genere html?
Det jeg ville kunne gøre er at bruge pl ligesom når jeg er på nettet. Køre den via en form få den til at bladre i databaser osv...
Hvordan gør jeg det.
Avatar billede erikjacobsen Ekspert
03. august 2000 - 12:58 #31
Og din server på din PC hedder ...???
Avatar billede funnysite_dk Nybegynder
03. august 2000 - 20:03 #32
Jeg troede ikke man skulle ha en server for at gøre det, jeg troede at man bare kunne køre den som på en hjemmeside.
Avatar billede funnysite_dk Nybegynder
03. august 2000 - 20:03 #33
Nu over til noget helt andet, du kunne vel ikke sige mig hvad der er galt med disse 2 cgi-filer.
Når jeg prøver at afvikle dem kommer den med denne fejlmeddeelse:

ved et\'eren:
Missing right bracket at bilsogen.cgi line 185, at end of line
  (Might be a runaway multi-line << string starting on line 176)
syntax error at bilsogen.cgi line 185, at EOF
Execution of bilsogen.cgi aborted due to compilation errors.

ved to\'eren:
Missing right bracket at topti.cgi line 50, at end of line
syntax error at topti.cgi line 50, at EOF
Execution of topti.cgi aborted due to compilation errors.

1.Cgi-fil:

#!/usr/local/bin/perl
require \"bilarkiv.pl\";

read(STDIN, $bufferdrengen, $ENV{\'CONTENT_LENGTH\'});
@data_par = split(/&/, $bufferdrengen);

foreach $enkelt_par (@data_par) {
  ($navn, $indhold) = split(/=/, $enkelt_par);
 
  $indhold =~ tr/+/ /;
  $indhold =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack(\"C\", hex($1))/eg;
  $indhold =~ s/\\cM\\n/\\n/g;

  if ($navn eq \'sogeord\') {
    $sogeord = $indhold;
  }

  else {}
 
}

$aa = \"1\";

$denerder = \"nej\";

for ($a=1; $a<($antalbil+1); $a++) {

@delskriv = split(//,$bilskriv{$a});
@delurl = split(//,$bilurl{$a});

$denerder = \"nej\";

for ($b=0; $b<((length($bilskriv{$a})-length($sogeord))+1); $b++) {

$bb = $b;

$ordmix = \"\";

for ($c=1; $c<(length($sogeord)+1); $c++) {

$ordmix = $ordmix + $delskriv[$bb];

$bb++;

}

if($ordmix eq $sogeord && $denerder eq \'nej\'){

$resultat{$aa} = $a;

$aa++;

$denerder = \"jo\";

}

for ($b=0; $b<((length($bilurl{$a})-length($sogeord))+1); $b++) {

$bb = $b;

$ordmix = \"\";

for ($c=1; $c<(length($sogeord)+1); $c++) {

$ordmix = $ordmix + $delurl[$bb];

$bb++;

}

if($ordmix eq $sogeord && $denerder eq \'nej\'){

$resultat{$aa} = $a;

$aa++;

$denerder = \"jo\";

}

}

}

if($aa >= 0){

for ($d=1; $d<($aa+1); $d++) {

print <<EOF
Content-type: text/html

<html>
<head>
<title>Billeder arkiv</title>
</head>
<body><br>
<div align=\"center\">
  <center>
  <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
    <tr>
      <td>
        <div align=\"center\">
          <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
            <tr>
              <td valign=\"bottom\"><img border=\"0\" src=\"http://www.funnysite.dk/bue1.gif\" width=\"9\" height=\"9\"></td>
              <td valign=\"top\" bgcolor=\"#103468\"><img border=\"0\" src=\"http://www.funnysite.dk/hjorne1.gif\" width=\"15\" height=\"15\"></td>
              <td bgcolor=\"#103468\" width=\"250\" align=\"center\"><font color=\"#FFFFFF\" face=\"Comic Sans MS\" size=\"4\">$bilurl{$resultat{$d}}</font></td>
              <td valign=\"top\" bgcolor=\"#103468\"><img border=\"0\" src=\"http://www.funnysite.dk/hjorne2.gif\" width=\"15\" height=\"15\"></td>
              <td valign=\"bottom\"><img border=\"0\" src=\"http://www.funnysite.dk/bue2.gif\" width=\"9\" height=\"9\"></td>
            </tr>
          </table>
        </div>
      </td>
    </tr>
    <tr>
      <td>
        <div align=\"center\">
          <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
            <tr>
              <td><img border=\"0\" src=\"http://www.funnysite.dk/hjorne1.gif\" width=\"15\" height=\"15\"></td>
              <td bgcolor=\"#103468\"><img border=\"0\" src=\"http://www.funnysite.dk/brug.gif\" width=\"1\" height=\"1\"></td>
              <td><img border=\"0\" src=\"http://www.funnysite.dk/hjorne2.gif\" width=\"15\" height=\"15\"></td>
            </tr>
            <tr>
              <td bgcolor=\"#103468\">&nbsp;</td>
              <td bgcolor=\"#103468\" width=\"300\" align=\"center\"><img border=\"0\" src=\"$bilurl{$resultat{$d}}\"></td>
              <td bgcolor=\"#103468\">&nbsp;</td>
            </tr>
            <tr>
              <td><img border=\"0\" src=\"http://www.funnysite.dk/hjorne3.gif\" width=\"15\" height=\"15\"></td>
              <td bgcolor=\"#103468\"><img border=\"0\" src=\"http://www.funnysite.dk/brug.gif\" width=\"1\" height=\"1\"></td>
              <td><img border=\"0\" src=\"http://www.funnysite.dk/hjorne4.gif\" width=\"15\" height=\"15\"></td>
            </tr>
          </table>
        </div>
      </td>
    </tr>
    <tr>
      <td>
        <div align=\"center\">
          <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
            <tr>
              <td>
                <div align=\"center\">
                  <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\">
                    <tr>
                      <td valign=\"top\"><img border=\"0\" src=\"http://www.funnysite.dk/bue3.gif\" width=\"9\" height=\"9\"></td>
                      <td valign=\"bottom\" bgcolor=\"#103468\"><img border=\"0\" src=\"http://www.funnysite.dk/hjorne3.gif\" width=\"15\" height=\"15\"></td>
                      <td bgcolor=\"#103468\"><font color=\"#FFFFFF\" face=\"Comic Sans MS\" size=\"4\">Beskrivelse:</font></td>
                      <td valign=\"bottom\" bgcolor=\"#103468\"><img border=\"0\" src=\"http://www.funnysite.dk/hjorne4.gif\" width=\"15\" height=\"15\"></td>
                      <td valign=\"top\"><img border=\"0\" src=\"http://www.funnysite.dk/bue4.gif\" width=\"9\" height=\"9\"></td>
                    </tr>
                  </table>
                </div>
              </td>
            </tr>
            <tr>
              <td width=\"275\"><font face=\"Comic Sans MS\">$bilskriv{$resultat{$d}}</font></td>
            </tr>
          </table>
        </div>
      </td>
    </tr>
  </table>
  </center>
</div>
</body>
</html>
EOF
;

}

}

print <<EOF
Content-type: text/html

<html>
<head>
<p><h1>Ingen billeder matcher skrevne søgeord</h1></p>
</body>
</html>
EOF
;

2.Cgi-fil:

#!/usr/local/bin/perl
require \"topbil.pl\";
$| = 1;

$plads{1} = \"0\";
$plads{2} = \"0\";
$plads{3} = \"0\";
$plads{4} = \"0\";
$plads{5} = \"0\";
$plads{6} = \"0\";
$plads{7} = \"0\";
$plads{8} = \"0\";
$plads{9} = \"0\";
$plads{10} = \"0\";

$indtil = \"0\";
$hvorp = \"99999999\";

for ($a=1; $a<11; $a++) {

for ($b=1; $b<1600; $b++) {

if($bilhits{$b} >= $indtil && $bilhits{$b} <= ($hvorp+1)){
if($b ne $plads{1} &&
  $b ne $plads{2} &&
  $b ne $plads{3} &&
  $b ne $plads{4} &&
  $b ne $plads{5} &&
  $b ne $plads{6} &&
  $b ne $plads{7} &&
  $b ne $plads{8} &&
  $b ne $plads{9} &&
  $b ne $plads{10}){

$indtil = $bilhits{$b};
$plads{$a} = $b;

}
}

$hvorp = $bilhits{$plads{$a}};
$indtil = \"0\";

}

print \"content-type:text/html\\n\\n\";
print \"<html><body>\\n\";
print \"$plads{2}\\n\";
print \"</body></html>\";
exit;

Vil du ikke nok hjælpe mig, du får 50 point.
Avatar billede erikjacobsen Ekspert
03. august 2000 - 21:46 #34
Hmm, i 2eren starter du 2 forløkker og 2 if-er med {  men du har kun 3  afslutninger med  }
Det opdager den jo først ved sidste linie i programmet.

I 1eren ser det ud til at det er linien
  for ($a=1; $a<($antalbil+1); $a++) {
der starter en { uden at slutte den.... tror jeg nok... jeg har ikke kigget så grundigt
Avatar billede funnysite_dk Nybegynder
03. august 2000 - 22:10 #35
Nu virker den ene af dem, men jeg kan ikke få den anden til at virke (nr 1).
Nå, men tak for hjælpen du skal nok få de 50 point.
Avatar billede erikjacobsen Ekspert
03. august 2000 - 22:20 #36
der mangler altså blot en } i 1-eren. Prøv at sætte den som sidste linie helt for sig selv.
Så burde der ikke være fejl. Men det er nok ikke det rigtige sted, for jeg kan ikke helt
overskue din logik i programmet ;-)
Avatar billede funnysite_dk Nybegynder
03. august 2000 - 23:17 #37
Kan du sige mig hvad der er galt med denne linie : $sol =~ s////wt_/g;
Jeg prøver at skifte tegnet / ud med /wt_
Avatar billede erikjacobsen Ekspert
03. august 2000 - 23:32 #38
$sol =~ s/\\//\\/wt_/g;

Sæt en \\ foran, ellers kan man ikke se forskel på de /-er, der omslutter
de regulære udtryk, og det der er tegn i de regulære udtryk
Avatar billede funnysite_dk Nybegynder
03. august 2000 - 23:36 #39
Tusind tak.
Jeg har bare et spørgsmål til.
Hvordan plusser man tekst?
F.eks. efter jeg har delt et ord til $delord[0] og $delord[1]. Hvordan får jeg dem sat sammen?
Jeg har prøvet med $delord[0] + $delord[1] men det virker ikke. Resultat blivet et 0.
Avatar billede erikjacobsen Ekspert
04. august 2000 - 00:03 #40
$delord[0].$delord[1]

Punktum, dvs: . , er tekstkonkateneringsoperatoren
Avatar billede funnysite_dk Nybegynder
16. september 2000 - 12:35 #41
Hvad mener du med genere html ved at skriver perl test.pl > test.htm og kigge på test.htm i en browser. Hvad skal test.pl indeholde og hvad skal test.htm indeholde. Hvordan fungere det?
Avatar billede erikjacobsen Ekspert
16. september 2000 - 20:50 #42
Dit perl-program ligger i test.pl eller hvis du hellere vil i test.cgi. Så kan du fra en
kommandolinie i Dos (eller Unix/Linux) skrive

  perl test.pl

eller

  perl test.cgi

Så kommer al output væltende ud på skærmen. Hvis du vil gemme det på en fil, så skriver du

  perl test.pl > test.htm

eller

  perl test.cgi > test.htm

og kigger på den nye fil test.htm i en teksteditor. Ok?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB