Pokaż wyniki 1 do 9 z 9

Temat: [perl] Składanie zmiennych

  1. #1
    Zarejestrowany
    May 2008
    Skąd
    Kielce
    Postów
    121

    Domyślnie [perl] Składanie zmiennych

    Mam nastepujacy problem:

    Wysyłam geta załóżmy do http://wp.pl no i z tego geta wycinam sobie link to css'a no wiec załóżmy wyciałem 'style.css' no i teraz moj problem
    Jesli $get = 'http://wp.pl a w zmiennej $css = 'style.css' to jak teraz zrobic zeby mi powstala np. zmienna $lolek = 'http://wp.pl/style.css'

    Pozdrawiam

  2. #2
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Kod:
    my $lolek='http://www.wp.pl/' . $css;
    albo
    Kod:
    my $lolek="http://www.wp.pl/$css";
    albo

    Kod:
    my $lolek=sprintf("%s%s", 'http://www.wp.pl/', $css);
    ... mam wymyslac kolejne sposoby?
    To bylo omawiane w kursie perla tutaj na forum (interpolacja zmiennych i operacje na stringach, roznica miedzy ' ' a " ") - proponuje odswiezyc
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  3. #3
    Zarejestrowany
    May 2008
    Skąd
    Kielce
    Postów
    121

    Domyślnie

    Kurcze gdzie ja ten mózg zgubiłem takie banalne to było :/ Sorry wielkie dzieki

  4. #4
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Nie ma za co przepraszac - kazdemu sie trafia utknac na banalnej rzeczy
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  5. #5
    Zarejestrowany
    May 2008
    Skąd
    Kielce
    Postów
    121

    Domyślnie

    Nie bede juz zakładał nowego wątku zapytam tu

    Czy istnieje jakaś możliwość zmienić tak tablice jak np. mam 2 elementy

    my @admin=("lolek","Hardiel");

    i teraz chce przekształcic tablice tak do zmiennej zebym nie musiał robic za kazdym razem np.

    if ($lolek = @admin[0]) { cos tam; }
    if ($lolek = @admin[1]) { cos tam; }
    tylko proste porównanie jezeli choc 1 element z tablicy sie zgadza to wykonanie ifa (totalnie nie mam pomysłu próbowałem na rózne sposoby)

    @liczby = ("lolek","Hardiel");
    $lolek = $ARGV[0];
    foreach $liczba (@liczby) {
    if ($lolek == $liczba) { print "liczymy!\r\n"; }
    }

    Przykład z kursu to stosowałem ale nawet jak wpisuje jako argument "ss" to i tak printuje ze if sie zgadza tylko jak wpisuje jakas liczbe to nie spełnia ifa sam juz nie czaje
    Ostatnio edytowane przez Hardiel : 09-30-2008 - 19:02

  6. #6
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    Cytat Napisał Hardiel Zobacz post
    if ($lolek = @admin[0]) { cos tam; }
    if ($lolek = @admin[1]) { cos tam; }
    Taki zapis zawsze zwroci prawde... no powiedzmy... bo i tak jest zle zapisany - blad zaznaczylem na czerwono - jak odwolujesz sie do elementow tablicy to wywolujesz $tablica[indeks] zamiast @tablica[indeks].

    Druga sprawa co jest zle w tej konstrukcji to

    Cytat Napisał Hardiel Zobacz post
    if ($lolek == $admin[0]) { cos tam; }
    if ($lolek == $admin[1]) { cos tam; }
    Dales przypisanie a nie porownanie - jesli przypisanie wartosci do zmiennej $lolek sie uda to wykona sie kod

    Wyglada mi to na kod botka ircowego, wiec zrobimy to inaczej...

    Kod:
    foreach my $osoba (@admin) {
      if ($lolek == $osoba) { cos sie dzieje; }
    }
    oczywiscie mozna to zapisac jeszcze na kilka sposobow ale ten jest bardzo przejrzysty
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

  7. #7
    Zarejestrowany
    May 2008
    Skąd
    Kielce
    Postów
    121

    Domyślnie

    Zrobiłem tak :

    Kod:
    $lolek = $ARGV[0];
    @admin = ("Fobetor","Hardiel");
    foreach my $osoba (@admin) {
      if ($lolek == $osoba) {
    print "lol\r\n"; }
    }
    nadal jeśli zastosuje nawet w $ARGV[0] dowolną litere to zwraca prawde tylko przy cyfrach nie zwraca prawdy

  8. #8

    Domyślnie

    Do porównywania napisów nie stosuje się operatora porównania ("=="), lecz znaków "eq". Ponieważ używasz operatora "==", skrypt interpretuje zmienne jako liczby (próbuje zamienić napis na liczbę i w przypadku gdy napis nie rozpoczyna się cyframi, zwraca 0), stąd wychodzi porównanie 0 == 0. Tak więc raczej powinno być:
    Kod:
    $lolek = $ARGV[0];
    @admin = ("Fobetor","Hardiel");
    foreach my $osoba (@admin) {
      if ($lolek eq $osoba) {
    print "lol\r\n"; }
    }

  9. #9
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    zawsze mozna inaczej... choc regexow nalezy unikac jesli mozna - dodaja niepotrzebnie iles cykli do obliczen, to tutaj gwarantuja ze nie ma znaczenia czy porownujesz napisy cyz liczby. Jesli obie wartosci masz w postaci zmiennych i porownujesz 2 skalary == tez dziala (przynajmniej u mnie... a jak dam 'eq' to dostaje wanrningi).

    Kod:
    map { costam if /^$ARGV[0]$/ } @admin;
    krocej chyba sie nie da ;P
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

Podobne wątki

  1. [Perl] Kurs Perl - cz.1 - wprowadzenie i podstawy
    By TQM in forum Perl/Python/TCL/Prolog
    Odpowiedzi: 22
    Autor: 10-27-2014, 01:50
  2. Odpowiedzi: 18
    Autor: 07-14-2009, 12:55
  3. zmiana zmiennych
    By kosiarz in forum Matematyka/Liczby/Kody/Teoria Chaosu
    Odpowiedzi: 10
    Autor: 08-12-2008, 20:17
  4. Odpowiedzi: 31
    Autor: 05-20-2008, 18:01
  5. Tablice zmiennych (zielony)
    By soovek in forum Perl/Python/TCL/Prolog
    Odpowiedzi: 6
    Autor: 10-15-2007, 16:11

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj