[Perl] Binnen script een ander script aanroepen

Pagina: 1
Acties:

  • Qdance
  • Registratie: September 2002
  • Laatst online: 17-12-2023
Yo..

Tijdje geleden had ik al wat gepost over mijn stageopdracht waarin aanvragen voor rechten via het intranet moest worden gedaan.

Met wat hulp van GOT is dat prima gelukt..alleen nu heb ik tijd over binnen mijn stage 8)7 ....en inderdaad nu moet ik wat extra gaan doen.

Het script dat de aanvraag verstuurd moet deze ook daadwerkelijk kunnen uitvoeren. Dit moet ik doen door bepaalde variabelen naar een 2e script te sturen en de output hiervan te tonen aan de gebruiker.

Maar hoe roep ik binnen een script een ander script aan..en hoe krijg ik de output dan weer binnen? De 2 scripts staan overigens in dezelfde directory en script 1 moet blijven wachten op output voordat ie verder gaat

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 05-01 14:41
Wat heb je geprobeerd en waarom werkte dat niet? :)

  • Qdance
  • Registratie: September 2002
  • Laatst online: 17-12-2023
Ik heb met de volgende code in script a geprobeerd script b te laten uitvoeren:


code:
1
2
3
4
$output = `perl c:/inetpub/wwwroot/synergy/synergy_ur_request.pl`;
# Now $output contains the output of scriptB

print $output;


in script B wordt momenteel alleen 1 variabele terug gestuurd.
Deze weet ik nu af te vangen (zie code) en vervolgens kan ik er alles mee doen wat ik wil. Heb dus het probleem grotendeels opgelost...tja...soms zie je in 1 keer een oplossing.

Wat ik nu nog niet voor elkaar krijg is om een 8 tal variabelen mee te sturen van script a naar script b.

Iemand hier nog een oplossing voor??

[ Voor 83% gewijzigd door Qdance op 30-11-2004 14:08 ]


  • Kahlan
  • Registratie: Juli 2000
  • Laatst online: 24-04 13:35
code:
1
2
3
4
5
6
7
8
9
10
11
12
@output = `perl c:/inetpub/wwwroot/synergy/synergy_ur_request.pl`;
# now output contains the different outputs separated by | character (e.g. ...)

foreach(@output)
{
    my @vars=split('\|',$output[0]); 
    print $vars[6];   # task
    print "\t";
    print $vars[3];   # username

}
print $output;


Ofzoiets. Het principe is duidelijk en ja ik weet dat een tweede array introduceren nu niet echt handig is maar het gaat om het principe.

  • Qdance
  • Registratie: September 2002
  • Laatst online: 17-12-2023
Ik bedoel eigenlijk andersom...dus dat je van dat script de variabelen mee stuurt naar een tweede script..ik heb het nu dmv de argumenten mee te geven in de regel die het 2e script aanroept. Dit werkt wel aardig, mocht iemand nog een betere oplossing hebben dan houd ik me aanbevolen..

  • bRight
  • Registratie: Juli 2000
  • Laatst online: 27-11-2024

bRight

digitaal

kan je niet gewoon includen met require?

  • Qdance
  • Registratie: September 2002
  • Laatst online: 17-12-2023
Ehh..heb je hier iets van een voorbeeld van? Volgens mij kan je met require toch alleen code uit een file halen om direct te laten executen? Voor het laden van bijv. modules?

Ik wil gewoon een script aanschoppen vanuit een script..variabelen mee sturen..en output terug ontvangen..dat aanschoppen en iets terug ontvangen gaat prima..alleen op welke manier kan ik
het beste gegevens mee zenden

Ik had ong. het volgende geprobeerd..maar volgens mij gaat dat al niet lukken:

code:
1
2
3
4
5
6
7
  #list variable containing the user rights request data
  @request_data =($firstname, $lastname, $id, $email, $database, $read_only,
        $submitter, $ccb_member, $integrator, $developer, $build_manager);

  # Send request data to a script that will process the data in Synergy
  # Now $output contains the output of script synergy_ur_request.pl
  $output = `perl c:/inetpub/wwwroot/synergy/synergy_ur_request.pl @request_data`;

  • Rowwan
  • Registratie: November 2000
  • Laatst online: 21:42
Zoals je het nu doet wordt het doorgegeven als command line argumenten...
Je kunt ze in het 2e script opvragen met $ARGV

  • Qdance
  • Registratie: September 2002
  • Laatst online: 17-12-2023
Je hebt helemaal gelijk...kan nu met $ARGV[0] tot en met $ARGV[10] de verzonden gegevens
bekijken. Eigenlijk heel simpel,...maar in ieder geval bedankt! _/-\o_

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 15-05 06:45
Toch heeft bRight gewoon gelijk dat je dit veel beter op kan lossen door het script als module in te laden en uit te voeren. Ik zie het nu al helemaal misgaan als je speciale karakters in @request_data hebt staan, om maar te zwijgen over de overhead die het starten van een nieuwe Perl-interpreter in een nieuwe shell met zich meebrengt.

  • Qdance
  • Registratie: September 2002
  • Laatst online: 17-12-2023
In mijn geval zullen speciale tekens niet voorkomen omdat er van te voren al bekend is welke gegevens mogelijk worden doorgestuurd ( 30 verschillende strings ongeveer).

Verder is mijn kennis van Perl vrij nihil...
Pagina: 1