Skocz do zawartości

Eksplodowanie Zmiennych


Siela

Rekomendowane odpowiedzi

Czy istnieje możliwość rozbicia zmiennej na kilka mniejszych? Coś w stylu explode() w PHP... Przykładowo

$nazwa=<STDIN>; #wczytany zostaje ciąg znaków "Ala ma kota"

Teraz w jaki sposób mogę zrobić by program wyświetlił mi tylko ostatnią część tego ciągu znaków czyli "kota"... Myślałem, że mogę to zrobić wczytując zmienne do tablicy... Ale niestety nie potrafię tego zrobić...

Odnośnik do komentarza
Udostępnij na innych stronach

Nie wiem jak to wygląda w perlu, ale czy nie możesz np. pobierać danych zamiast do zmiennej do tablicy.

Bierzesz pętelą każdy znak do osobnego elementu tablicy, a potem wyciągasz sobie to co chcesz.

 

Jeśli ten sposób się nie sprawdzi (bo musisz wyszukać określony ciąg znaków) to myślę że powinna być jakaś gotowa funkcja.

W Visual Basicu jest np. coś takiego jak "Mid" za pomocą którego możesz wyciągnąć określony ciąg znaków ze wskazanego łańcucha.

 

Jeśli nie ma w perlu takiej funkcji to będziesz musiał napisać sam. Tak na szybcika wydaje mi się że wystarczy wczytać zmienną do tablicy (choć chyba nie koniecznie) a potem pętlą for przeszukiwać łańcuch w poszukiwaniu łańcucha.

 

Jeśli masz wyraz "domator" i chcesz wyszukać łańcuch "mat" to musisz pobrać pierwszą literkę z "domator" i porównać ją z pierwszą literką z "mat". Jak trafisz na w końcu na miejsce w którym znaki się zgadzaja ("m"), to sprawdzasz następne czy są zgodne itd. itd..

 

Nie wiem czy ci to pomoże bo nie znam Twoich umiejętności.

Odnośnik do komentarza
Udostępnij na innych stronach

Z tego co sie orientuje, to Perl bazuje w jakims stopniu na sh. W bashu chodzi cos takiego:

x="test.txt"
z=${x#${x%???}}
echo $z

Zawsze mozesz spróbowac.

 

Jednak jestem przekonany, ze w takim jezyku jak Perl znajdzie sie gotowa funkcja.

 

[edit]

http://forums1.itrc.hp.com/service/forums/...hreadId=1013438

Odnośnik do komentarza
Udostępnij na innych stronach

PHP jest wzorowany na perlu. Wiec konstrukcje w obu jezykach sa podobne.

Niedopieszczony, elementarny kod czytajacy tekst wiersz po wierszu i zamieniajacy wiersz na tablice slów moze wygladac tak:

#!/usr/bin/perl
while ($wiersz = <STDIN>) {
    @wiersz = split(" ", $wiersz);
    for ($i=0; $i<@wiersz; $i++){
        print @wiersz[$i] . "\n";
    }
}

Z tym ze to samo da sie zrobic krócej, efektywniej i ladniej. I mniej czytelnie na pierwszy rzut oka ;)

 

Programowanie bez podrecznika male ma szanse. Nie wiem czy wypada doradzac konkretne pozycje, bo to kryptoreklama.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
×
×
  • Dodaj nową pozycję...