Kirjoittaja Aihe: miten voin perlillä komentaa esim.  (Luettu 2578 kertaa)

future

  • Käyttäjä
  • Viestejä: 7
  • Kyllä se tästä. Säätämällä ja viilaamalla
    • Profiili
miten voin perlillä komentaa esim.
« : 25.01.07 - klo:20.16 »
minkälainen koodi pitäs näpytellä, et esimerkiksi tää alla oleva komento toimisi. siis perlillä. olen vielä aika avuton näissä sripteissä. onko perl paras mahdollinen tähän terkoitukseen?
Koodia: [Valitse]
sudo modprobe -r pcnet32
sudo modprobe pcnet32 homepna=1
olen itse yrittänyt seuraavaa(eli ei siis mitään hajua asiasta):

tiedostonimi: run_internet.pl
Koodia: [Valitse]
#!/usr/bin/perl -w
print "sudo modprobe -r pcnet32";
print "sudo modprobe pcnet32 homepna=1";


-future-

raimo

  • Käyttäjä
  • Viestejä: 4269
  • openSUSE Tumbleweed
    • Profiili
Vs: miten voin perlillä komentaa esim.
« Vastaus #1 : 26.01.07 - klo:09.15 »
minkälainen koodi pitäs näpytellä, et esimerkiksi tää alla oleva komento toimisi. siis perlillä. olen vielä aika avuton näissä sripteissä. onko perl paras mahdollinen tähän terkoitukseen?
Koodia: [Valitse]
sudo modprobe -r pcnet32
sudo modprobe pcnet32 homepna=1
olen itse yrittänyt seuraavaa(eli ei siis mitään hajua asiasta):

tiedostonimi: run_internet.pl
Koodia: [Valitse]
#!/usr/bin/perl -w
print "sudo modprobe -r pcnet32";
print "sudo modprobe pcnet32 homepna=1";

Komentoja suoritetaan vaikkapa näin (3 erilaista tapaa)
Koodia: [Valitse]
`sudo modprobe -r pcnet32`;
`sudo modprobe pcnet32 homepna=1`;
Tuo mystinen ` -hipsu ilmenee yleensä AltGr+*+välilyönti -yhdistelmällä.

Koodia: [Valitse]
system("sudo modprobe -r pcnet32");
system("sudo modprobe pcnet32 homepna=1");

Ja lopuksi pipe, eli tässä merkitsevä asia on | -merkki komennon lopussa
Koodia: [Valitse]
open XXX, "sudo modprobe -r pcnet32 |";
close XXX;

open XXX, "sudo modprobe pcnet32 homepna=1 |";
close XXX;
Katsele manuaalista miten nuo eroavat toisistaan, eroja on lähinnä siinä miten muu ohjelma jatkaa suoritustaan.
Ja perlihän siis on ihan paras kaikkiin mahdollisiin tarkoituksiin. ;)
« Viimeksi muokattu: 26.01.07 - klo:09.17 kirjoittanut raimo »
Tietä käyden tien on vanki. Vapaa on vain umpihanki.
Aaro Hellaakoski

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Vs: miten voin perlillä komentaa esim.
« Vastaus #2 : 26.01.07 - klo:12.59 »
Tuo mystinen ` -hipsu ilmenee yleensä AltGr+*+välilyönti -yhdistelmällä.

Tai sitten shift+'+välilyönti, missä ' on askelpalauttimen (backspace) vasemmalla puolella oleva merkki.

onko perl paras mahdollinen tähän terkoitukseen?

Itse tekisin tuosta sh- tai bash-skriptin. Tuossa ei tähän mennessä ole mitään mikä edellyttäisi perl:n käyttämistä. Alla esimerkkitoteutus sh-skriptinä (joka ubuntuympäristöstä riippuen suoritetaan joka bash- tai dash-tulkilla).

Koodia: [Valitse]
#!/bin/sh
sudo modprobe -r pcnet32
sudo modprobe pcnet32 homepna=1

Jos tuota lähtee laajentamaan ja käytössä olevassa ubuntussa on sh linkattu bash-tulkkiin niin silloin kannattaa vaihtaa ensimmäinen rivi viittaamaan suoraan bash-tulkkiin. Muuten käy herkästi niin että käyttää huomaamattaan bash:n ominaisuuksia jotka eivät normaalissa sh-tulkissa toimi ja sitten käyttöjärjestelmän päivityksen jälkeen ihmetellään kun skriptit eivät enää toimi kun käyttöjärjestelmän sh-viittaus on muutettu dash-tulkkiin.

Tässä nimenomaisessa tapauksessa en usko laajennustarpeeseen, mutta jos sellaista olisi niin sitten tarpeesta riippuen myös perl voisi olla järkevä vaihtoehto. Riippuu ihan siitä mitä pitää tehdä :)