| 
					
							
        
    
        
						
			 | 
			
			
					    
					
        
         
          
         
	
            | delete array index Fra : Morten P | 
  Dato :  29-11-08 16:49 |  
  |   
            Jeg skal slette et index fra et array så det bliver trunkeret.
 
 Jeg har bygget en funktioner til det, men det virker lidt omstændeligt.
 
 Kan det optimeres?
 
 
 
 my @arr = ('a','b','c');
 
 print Dumper adelete(0, @arr); # b,c
 print Dumper adelete(1, @arr); # a,c
 print Dumper adelete(2, @arr); # a,b
 
 
 sub adelete
   {
     my ($index, @arr) = @_;
 
     # index out of bounds
     return if $index > scalar @arr - 1;
     return if $index < 0;
 
     # First index
     return splice (@arr, $index+1)
       if $index == 0;
 
     # Last index
     return splice (@arr, 0, $index)
       if $index == scalar @arr - 1;
 
     my @ar_before = splice (@arr, 0, $index);
     my @ar_after = splice (@arr, $index);
 
     return (@ar_before, @ar_after);
   }
 
 
  
            
             |   |   
            
        
 
            
         
           Adam Sjøgren (29-11-2008) 
         
	
            | Kommentar Fra : Adam Sjøgren | 
  Dato :  29-11-08 17:08 |  
  |   
            On Sat, 29 Nov 2008 16:49:19 +0100, Morten wrote:
 
 > Jeg skal slette et index fra et array så det bliver trunkeret.
 > Jeg har bygget en funktioner til det, men det virker lidt omstændeligt.
 
 > Kan det optimeres?
 
 Det kan skrives kortere - splice() kan så vidt jeg kan se klare det du
 vil direkte?
 
   $ perl mortenp.pl 
   $VAR1 = 'b';
   $VAR2 = 'c';
   $VAR1 = 'a';
   $VAR2 = 'c';
   $VAR1 = 'a';
   $VAR2 = 'b';
   $ perl asjo.pl 
   $VAR1 = [
             'b',
             'c'
           ];
   $VAR1 = [
             'a',
             'c'
           ];
   $VAR1 = [
             'a',
             'b'
           ];
   $ cat asjo.pl
   #!/usr/bin/perl
 
   use strict;
   use warnings;
 
   use Data::Dumper;
 
   my @arr = ('a','b','c');
 
   print Dumper [ bdelete(0, @arr) ]; # b,c
   print Dumper [ bdelete(1, @arr) ]; # a,c
   print Dumper [ bdelete(2, @arr) ]; # a,b
 
   sub bdelete {
       my ($index, @list)=@_;
 
       splice(@list, $index, 1);
 
       return @list;
   }
   $ 
 
 (Jeg har sat [] rundt om i kaldet til Dumper, så uddata bliver grupperet
 lidt mere læseligt. Fejlcheck efterlades som en øvelse til læseren).
 
 Måske jeg har misforstået spørgsmålet?
 
 
   Mvh.
 
    Adam
 
 -- 
  "If I succeed it seems to me                                 Adam Sjøgren
   That we should tell it to people like me"              asjo@koldfront.dk
  
            
             |   |   
            
        
 
            
         
           Morten P (29-11-2008) 
         
	
            | Kommentar Fra : Morten P | 
  Dato :  29-11-08 19:31 |  
  |  
 
            > Det kan skrives kortere - splice() kan så vidt jeg kan se klare det du
 > vil direkte?
 haha, fedt! Så ved man at man arbejder med Perl   
Jo, du forstod det korrekt, sparede mig lige for en spildt funktion!
 Tak :) 
            
              |   |   
            
        
 
            
         
           Adam Sjøgren (29-11-2008) 
         
	
            | Kommentar Fra : Adam Sjøgren | 
  Dato :  29-11-08 20:04 |  
  |  
 
            On Sat, 29 Nov 2008 19:31:27 +0100, Morten wrote:
 >> Det kan skrives kortere - splice() kan så vidt jeg kan se klare det du
 >> vil direkte?
 > haha, fedt! Så ved man at man arbejder med Perl   
> Jo, du forstod det korrekt, sparede mig lige for en spildt funktion!
 Hvordan er det nu... Fjern alt unødvendigt, men ikke mere end det?
 > Tak :) 
 Velbekomme.
   Mvh.
 -- 
  "Eternal evil                                                Adam Sjøgren
   Yeah it stares behind the desk"                        asjo@koldfront.dk
            
              |   |   
            
        
 
    
 
					
					 
			 | 
			
				
        
			 |