Pokaż wyniki 1 do 9 z 9

Temat: [perl] Składanie zmiennych

  1. #1
    Avatar Hardiel
    Hardiel jest offline Damian
    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
    Avatar Hardiel
    Hardiel jest offline Damian
    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
    Avatar Hardiel
    Hardiel jest offline Damian
    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
    Avatar Hardiel
    Hardiel jest offline Damian
    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
    Zarejestrowany
    Nov 2007
    Postów
    54

    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