http://www.perlmonks.org?node_id=21127

Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question: (programs and processes)

I have made a small script to pop up a message on the screen after an event, but I cannot code the CTRL-D command so it won't work.
!#/usr/bin/perl `smbclient -M victimname'; echo `message is sent to you`; echo `CTRL-D`;
I have tried numerous fixes and searched the web to no avail. Many thanks, M@.F

Originally posted as a Categorized Question.

Replies are listed 'Best First'.
Re: Coding CTRL-D
by athomason (Curate) on Jul 06, 2000 at 09:38 UTC
    <CTRL-D> can be displayed, printed, sent, or whatever by chr(4). However, this won't fix your script, since 1) echo isn't a Perl command, 2) if it were, it wouldn't print to smbclient, which I assume you're trying to do, and 3) you shouldn't need to send a <CTRL-D> if you do IPC the right way. You need something like

    !#/usr/bin/perl -w use strict; my ($victim, $message) = ("joe", "bloop"); # open an output pipe to the external program open SMB, "| smbclient -M $victim"; # print on the pipe's handle print SMB $message; # close the handle, which implicitly sends an EOF close SMB;

    Hope that helps.

Re: Coding CTRL-D
by Anonymous Monk on Jul 05, 2000 at 22:19 UTC
    try this: #!/usr/bin/perl #other stuff print pack("c", 04"); # c is for signed character value, and 04 is control-d, aka, EndOfTransmission.