---
title: "Varför funkar inte."
type: "forum-thread"
url: "https://www.webforum.nu/amne/perl-ruby/19147-varför-funkar-inte"
topic: "Perl & Ruby"
topic_url: "https://www.webforum.nu/amne/perl-ruby"
author: "cgi"
published: "2000-08-18T20:02:00.000Z"
updated: "2000-08-24T09:57:00.000Z"
replies: 11
views: 462
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/perl-ruby/19147-varför-funkar-inte"
---

# Varför funkar inte.

## #1 — cgi, 2000-08-18T20:02Z

Varför funkar inte denna kod: x(    

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

        open (SIDA, "\<http://www.prodesign.nu/index.jsp?sida=start");
        while ($rad = \<SIDA\> ) {print $rad;}
        close SIDA;

Permalänk: https://www.webforum.nu/p/19147

## #2 — Muzzafarath, 2000-08-18T20:32Z

Tror faktiskt att open bara funkar på lokala sidor. Annars får du använda nån modul (eller skriva en själv) för att hämta hem index.jsp sidan till din server, och sedan öppna den.

Permalänk: https://www.webforum.nu/p/341040

## #3 — sgtpepper, 2000-08-18T22:05Z

Du måste öppna en socket-förbindelse till sajten och skicka HTTP-kommandon för att hämta sidan.

Den här metoden hittade jag på min hårddisk, vet tyvvärr inte vem som är upphovsman:

```
sub slurpURLcontent {

    # local variables
    local $hostname;
    local $name;
    local $aliases;
    local $proto,
    local $type;
    local $len;
    local $thisaddr;
    local $thataddr;
    local $sockaddr;
    local $this;
    local $that;
    local @response;
    
    # get parameters from parameter list
    local ($them, $port, $url) = @_; 
    
    # get local hostname
    
    chop($hostname = `hostname`);
    
    # resolve protocol, port number
    
    ($name, $aliases, $proto) = getprotobyname('tcp');
    ($name, $aliases, $port) = getservbyname($port,'tcp')
	unless $port =~ /^\d+$/;
     
    # look up IP address for localhost
    
    ($name,$aliases,$type,$len,$thisaddr) = gethostbyname($hostname);
    
    # look up IP address for server
    
    ($name, $aliases,$type,$len,$thataddr) = gethostbyname($them);
    
    # create one endpoint of the communication link
    
    die $! unless (socket(S,AF_INET, SOCK_STREAM, $proto));
    
    $sockaddr = 'S n a4 x8';
    $this = pack($sockaddr, AF_INET, 0, $thisaddr);
    $that = pack($sockaddr, AF_INET, $port, $thataddr);
    
    die $! unless (bind(S, $this));
    
    # connect to server
    
    die $! unless (connect(S, $that));
    
    # force our socket to flush output immediately after a print
    
    select(S);
    $| = 1;
    
    # make standard output the default again
    
    select(STDOUT);
    
    # get specified page

    print S "GET $url\r\n";
    @response = <S>;

# We strip off the HTTP header by looking for 
# two newlines or two newlines preceeded with
# carriage returns.  Different Web Servers use
# different delimiters sometimes.
#
    $x = index(@response, "\r\n\r\n");
    $split_length = 4;

    if ($x == -1) {
        $x = index(@response, "\n\n");
        $split_length = 2;
    }
#
# The following actually splits the header off
    if ($x > -1) {
        @response = substr($buf,$x + $split_length);
    }

    return @response;

}
```

Permalänk: https://www.webforum.nu/p/341041

## #4 — cgi, 2000-08-20T12:19Z

Provade med denna kod:

$fil_1 = "http://www.prodesign.nu/index.jsp?sida=start";
print "Content-type:text/html\\n\\n";
open(INDATA,"$fil_1") \| \| &Fatal;
@rader = \<INDATA\>;
foreach $rad (@rader) {
	print $rad;	
}
close(INDATA);

sub Fatal {
	print "Kan inte öppna filen $fil_1 för läsning."
}

vilket borde funka felfritt tycker man,
får upp felmeddelande kan inte öppna filen, någon som har någon bättre lösning.

\[Redigerat av cgi den 20 aug 2000\]

Permalänk: https://www.webforum.nu/p/341042

## #5 — Muzzafarath, 2000-08-20T13:25Z

Men du, det är ju precis samma sak som förut... Så klart att den inte funkar: du kan bara öppna \_lokala\_ filer med open!

Permalänk: https://www.webforum.nu/p/341043

## #6 — cgi, 2000-08-20T13:33Z

Ahh...ok du har ingen lösning på problemet.

Permalänk: https://www.webforum.nu/p/341044

## #7 — emission, 2000-08-21T18:38Z

```
use LWP::Simple;

$url="http://www.prodesign.nu/index.jsp?sida=start";
$sidan=get($url) or die "Kan inte öppna url:en $url för läsning";

print $sidan;
```

Permalänk: https://www.webforum.nu/p/341045

## #8 — cgi, 2000-08-21T21:05Z

Funkar kanon, men det går ej att öppna cgi filer, går det på något sätt.

Permalänk: https://www.webforum.nu/p/341046

## #9 — demo, 2000-08-23T16:35Z

Det går nog inte att öppna cgi & pl filer då utomstående saknar de rättigheterna.

De filer du inte kan öppna i webbläsaren, kan du nog inte hämta med denna modul heller.

//Demo

Permalänk: https://www.webforum.nu/p/341047

## #10 — emission, 2000-08-24T08:33Z

Vad menar du med att det inte går att öppna cgi-filer?

Permalänk: https://www.webforum.nu/p/341048

## #11 — cgi, 2000-08-24T09:13Z

Strunt samma det är fixat nu. :h

Permalänk: https://www.webforum.nu/p/341049

## #12 — demo, 2000-08-24T09:57Z

Vad menar du med att det inte går att öppna cgi-filer?

Vet inte om jag förstod rätt, men jag tror att cgi vill hämta själva cgi/pl-scriptet. Komma åt själva perlkoden liksom.

Det var utifrån det som mitt svar var baserat.

Permalänk: https://www.webforum.nu/p/341050

---

Tråden på webben: https://www.webforum.nu/amne/perl-ruby/19147-varför-funkar-inte
